Zapis TStringList do bin

Odpowiedz Nowy wątek
2011-09-25 17:00
0

Witam
Problem jest taki że nie mogę odczytać textu TStringList z zapisanego wcześniej pliku binarnego, jest możliwość takiego zapisu czy trzeba inaczej?

type
  TWayponts = record
    WptLine: array [0 .. 100] of String[20];
    Script :array [1 .. 165] of TStringList;
    Count:Integer;
  end;

procedure WWriteToBin(FileName: String);
 var
   F : file of TWayponts;
   i : integer;
 begin
  AssignFile(F,FileName+'.wgr') ;
  Rewrite(F) ;
  try
    Write (F, WayList) ;
  finally
   CloseFile(F) ;
  end;
 end;

I odczyt

procedure WReadFromBin(FileName: String);
 var
   Member: TWayponts;
   Membe: TWayponts;
   F : file of TWayponts;
   I:Integer;
 begin
  AssignFile(F,FileName) ;
  Reset(F) ;
  try

   while not Eof(F) do begin
    with Form9 do
    begin
    ListBox2.Clear;
    Read (F, Member) ;

    for I := 0 to 5 do begin
    Member.Script[i] := TStringList.Create;    /// JEZELI DAM PRZED ODCZYTEM JEST BŁAD
    Member.Script[I].SaveToFile('lol.txt');    /// Nic nie zapisuje (przykład)

    end;

      end; 
   end;
   end;
  finally
   CloseFile(F) ;
  end;
 end;

Pozostało 580 znaków

2011-09-25 19:26
0

Zobacz sobie na źródło w archiwum tego pluginu: http://www.totalcmd.net/plugring/fileindir.html tam właśnie wczytuję do zmiennej typu string zawartośc pliku i kiedy tekst jest również w pliku binatnym czyli na przykład poprzedzonym znakami #0 to również go znajdzie. Tak było mi najprościej i najszybciej zrobić pod WinAPI. A do wczytywania plików binarnych to najlepiej chyba pod VCL używać komponentów dziedziczących po TStream, na przykład jeżeli plik nie jest przesadnie wielki i chcesz na nim operowac w pamięci komputer to użyj TMemoryStream. Przesadnie wielki mam na mysli kilkaset MB.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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