TFileStream i 'Stream write error'

0

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;
0

hej :)
Chyba chodzi o samo pobieranie nazw plików.
Testowałem Twój kod i dla uproszczenia zastąpiłem Twoją zmienną listy plików "PathToFiles " - i tak bezpośrednio podałem nazwy plików:

listaPlikow.Add('1.txt');
listaPlikow.Add('2.txt');
listaPlikow.Add('3.txt');

I nie było żadnego błędu.
Wydaje mi się że błąd tkwi w pobraniu listy plików z jednej zmiennej do drugiej:

listaPlikow:=PathsToFiles; //PathToFiles to lista plikow

Nie wnikałem dalej i mogę się mylić.

0

Assign na Assignfile

1 użytkowników online, w tym zalogowanych: 0, gości: 1