Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не получается писать в файл. [D7, WinXP]


Страницы:   1 2

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. файл то двоичный


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо