Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Вниз

Проблема с выводом текста в файл   Найти похожие ветки 

 
Kordel   (2002-05-23 00:26) [0]

Эта процедура вроде как должна вывести текст в переменной t в файл, но она выводит туда всякую чепуху хотя кол-во символов совпадает:

procedure FormatTextFile(OutputFileName: string);
var
outs: TFileStream;
t: string;
begin
t:= EmptyStr;
outs:=TFileStream.Create(OutputFileName,fmCreate);
t:="some text";
outs.Write(t, length(t));
outs.Free;
end;

Помогите. Спасибо.

ЗЫ:
Может кто-нить напишет как грамотно выводит текст в файл используя потоки?


 
VID   (2002-05-23 00:40) [1]

ну потоки, потоками, а можно и через AssignFile... REWRITE/APPEND сохранять..
ещё можно создать TSTRINGLIST, добавить в него t (ts.add(t)), и сохранить это добро в файл (ts.savetofile)


 
Kordel   (2002-05-23 00:50) [2]

2VID ты умный человек, но мне надо через потоки, и я не понимаю почему не пашет то, что я написал! А через файлы противоречит моему желанию, тем более, что можно через потоки.


 
Vad   (2002-05-23 04:03) [3]

Видима, все таки, надо добавить такую переменную:
buf:array[0..250]of char;

а потом загонять строку в нее:
StrPcopy(buf,t);

и писать уже:
outs.Write(buf, length(t));

;-)))


 
MBo   (2002-05-23 06:57) [4]

Уважаемый, в другой твоей ветке я уже писал, как грамотно делать

procedure FormatTextFile(OutputFileName: string);
var
outs: TFileStream;
t: string;
begin
outs:=TFileStream.Create(OutputFileName,fmCreate);
t:="some text";
outs.Write( t[1], length(t));
outs.Free;
end;

Учти также, что для удобства чтения стоит сначала записать в поток длину строки
l:=length(t);
outs.Write(l,sixeof(l));




 
Kordel   (2002-05-23 11:28) [5]

2МВо
Ну слава богу то, что я записал читать (пока, по крайней мере) не придется. Но почему надо именно так???


 
MBo   (2002-05-23 13:06) [6]

потому что t-string-ansistring является на самом деле указателем, и так outs.Write(t, length(t));
запишется не строка, а значение указателя на нее и последующий блок памяти. А вот t[1] -это адрес начала строки



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-7024
Федина Лидия
2002-05-21 14:03
2002.06.03
инсталляция в InstallShield Express


14-7175
Yakudza
2002-04-24 13:17
2002.06.03
Palm


14-7182
IronHawk
2002-04-23 13:52
2002.06.03
Конструктивное предложение по архиву форума !


1-7053
ask
2002-05-21 13:37
2002.06.03
close form -> minimize


14-7207
MBo
2002-04-27 09:57
2002.06.03
Начинается Net? Из borland.public.attachments





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский