Hej
Przypuscmy, ze chcialbym w swoim programie 'skleic' pewna ilosc plikow zawarta w zmiennej <B>TStringList</B> i zapisac w jedym pliku.
Prodecura podczas pracy wywala blad </B>'Stream write error' i nie mam pojecia o co chodzi. Raczej nie chodzi o konkretny plik tylko bardziej o pamiec itp. Gdy zmienilem zawartosc listy plikow wywalil mi sie tez na innym.
O co chodzi?
Oto kod:
function PackIt(PathOut: string): boolean;
var
FileOut,FileTemp : TStream;
iloscPlikow,x:longint;
PozPliku,PozTemp:int64;
listaPlikow:TStringList;
F:File;
s:string;
begin
//stworz czysty plik
assign(F,PathOut);
rewrite(F);
close(F);
FileOut:=TFileStream.Create(PathOut,fmOpenReadWrite);
listaPlikow:=TStringList.Create;
listaPlikow:=PathsToFiles; //PathToFiles to lista plikow na wejsciu
IloscPlikow:=listaPlikow.Count;
if IloscPlikow<0 then
begin
Result:=true;
FileOut.Free;
exit;
end;
//zaczynamy
pozPliku:=0;
for x:=1 to IloscPlikow do
begin
try
s:=listaPlikow.Strings[x-1];
FileTemp:=TFileStream.Create(s,fmOpenRead);
FileTemp.Position:=0;
FileOut.Position:=pozPliku;
FileOut.CopyFrom(FileTemp,FileTemp.Size); //ani tak nie dziala
//FileOut.WriteBuffer(filetemp,FileTemp.Size); //ani tez tak
pozPliku:=FileOut.Size;
FileTemp.Free;
except
//fatalnie
end;
end;
FileOut.Free;
end;