![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается писать в файл. [D7, WinXP]
BigBadMutuh © (2003-01-17 19:04:00)Нужно записать в файл большой объём текста (>255 символов). WideString и AnsiString выдают ошибку. Попробовал разбить текст на части:
procedure TMain.HTML1Click(Sender: TObject);
var
C: integer;
F: TFileStream;
S: String;
begin
F:=TFileStream.Create("index.html",fmCreate);
F.Seek(0,soFromBeginning);
S:="Первый кусок текста";
F.Write(S,Length(S));
S:="Второй кусок текста";
F.Write(S,Length(S));
F.Free;
end;
Но даже если записывать только 1 слово, оно пишется в непонятной кодировке.
Вопросы:
1)Как можно записать сразу большой текст, не разбивая его на части?
2)Почему возникает проблема с кодировкой?
BigBadMutuh (2003-01-17 22:45:00) [21]Требуется записать не одинаковые символы, а определённый текст.
TTCustomDelphiMaster (2003-01-17 22:41:00) [22]В результате мы получим файл в который записана строка длинной 600 символов. Разве не это требуется?
BigBadMutuh (2003-01-17 22:38:00) [23]2TTCustomDelphiMaster
Судя по help"у в результате мы получим букву "А" 600 раз. Это несколько не то что мне требуется :).
TTCustomDelphiMaster (2003-01-17 22:34:00) [24]Все пишется, все работает...
var
F: TextFile;
s: string;
begin
s := StringOfChar("A", 600);
AssignFile(F, "c:\1.html");
Rewrite(F);
Writeln(F, S);
CloseFile(F);
end;
BigBadMutuh (2003-01-17 22:08:00) [25]И ещё : можно ли как то сделать, чтоб не разбивать текст на куски, а то он большой...там кусков 10 будет...
BigBadMutuh (2003-01-17 22:07:00) [26]файл - index.html (судя по коду).Хотя может и проще, писать сначала в txt, а потом переименовывать его в txt. Правильно так будет?
mmm...mmm (2003-01-17 20:18:00) [27]В какой тип файла?
Судя по описанию TXT. А не проще ли обычными Writeln() или BlockWrite()?
gsu (2003-01-17 20:11:00) [28]>> и не будет работать...
Уверен, проверь ка
Zmei-Gorin (2003-01-17 20:00:00) [29]и не будет работать...
procedure TMain.HTML1Click(Sender: TObject);
var
C: integer;
F: TFileStream;
S: String;
// для второго способа
i:integer;
begin
F:=TFileStream.Create("index.html",fmCreate);
F.Seek(0,soFromBeginning);
S:="Первый кусок текста";
//первый способ
F.Write(pchar(S),Length(S));
S:="Второй кусок текста";
//второй способ
for i:= 1 to length(s) do
F.Write(S[i],1);
F.Free;
end;
gsu (2003-01-17 19:24:00) [30]эх, код то правильный, делаешь не то, вот:
begin
var
F: TStringList;
S: String;
begin
F:=TStringList.Create;
S:="1 кусок";
F.Add(S);
S:="2 кусок";
F.Add(S);
f.SaveToFile("D:\index.html");
F.Free;
end;
BigBadMutuh (2003-01-17 19:17:00) [31]А можешь мне в коде исправить? А то я видимо опять что-то не так сделал...не компилится.
gsu (2003-01-17 19:08:00) [32]для строк используй TStringList
gsu (2003-01-17 19:07:00) [33]1. F.WriteBuffer(S,SizeOf(s));
2. файл то двоичный