Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

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

 
Kordel   (2002-05-22 17:03) [0]

Вызываю такую процедуру, но все время происходит исключение на последнем операторе, причем если добавлю в конец еще что-нить все равно будет на последнем.

function FormatTextFile(InputFN, OutputFN: string): string;
var
ins: TFileStream;
str, res: string;
i: word;
begin
ins:=TFileStream.Create(InputFN,fmOpenRead);
i:=ins.Read(str,7);
FormatTextFile:=res+str;
ins.Free;
end;


 
Kozhanov ©   (2002-05-22 17:07) [1]

FormatTextFile:=res+str; - FormatTextFile совпадает с названием
ф-ции function FormatTextFile ... или так задумано ?


 
Внук ©   (2002-05-22 17:11) [2]

>>Kozhanov ©
То же, что и Result:=res+str;
>>Kordel
Проблема, должно быть, в неприведенном куске кода


 
Kordel   (2002-05-22 17:16) [3]

так она вызывается
(S:TStaticText)

procedure TForm1.FormatBtnClick(Sender: TObject);
begin
S.Caption:=FormatTextFile(InputEdit.Text,OutputEdit.Text);
end;


 
MBo ©   (2002-05-22 17:18) [4]

function FormatTextFile(InputFN, OutputFN: string): string;
var
ins: TFileStream;
str, res: string;
i: integer;
begin
ins:=TFileStream.Create(InputFN,fmOpenRead);
i:=min(7,ins.size);
SetLength(str,i);
ins.Read(str[1],i);
ins.Free;
Result:=res+str;
end;


 
Kozhanov ©   (2002-05-22 17:19) [5]

перед
i:=ins.Read(str,7);
вставь
ins.Position := 0;


 
Kordel   (2002-05-22 17:27) [6]

Ничего не помогло, тогда может кто напишет, как с помощью TFileStream прочитать n байт из файла. Спасибо.


 
Внук ©   (2002-05-22 17:27) [7]

Шаманство все это, кроме SetLength. (Я-то рассчитывал на стандартную паскалевскую строку).


 
Внук ©   (2002-05-22 17:29) [8]

Упс.
Так MBo уже написал. Значит, не здесь собака зарыта.


 
MBo ©   (2002-05-22 17:33) [9]

А res и OutputFN зачем нужны?


 
Kozhanov ©   (2002-05-22 17:45) [10]

function FormatTextFile(InputFN, OutputFN: string): string;
var
ins: TFileStream;
AResult: string;
ABuffer : PChar;
begin
Result:= EmptyStr;
AResult := EmptyStr;
ins:=TFileStream.Create(InputFN,fmOpenRead);
ABuffer := AllocMem(7+1);
try
ins.Position := 0;
ins.Read(ABuffer^,7);
Result:= AResult + String(ABuffer);
finally
FreeMem(ABuffer, 7+1);
ins.Free;
end; //try
end;



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

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-7074
kiborg
2002-05-20 12:24
2002.06.03
Про компоненты без Canvas


7-7246
Nazaya
2002-03-07 14:13
2002.06.03
Мастера помогите ! Мне нужно написать сервис


4-7260
Eugene "Jek" Efimochkin
2002-03-29 23:51
2002.06.03
Нужно следить за состоянием фалов и папок...


14-7188
cok
2002-04-25 18:18
2002.06.03
Чё лучше?


1-7032
archey
2002-05-20 20:43
2002.06.03
OS function failed