Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: TStringList aus Datei nicht definierten Typs wieder einl

  Alt 23. Nov 2003, 18:34
Im Prinzip funktioniert das etwa so:

Delphi-Quellcode:
procedure BlockWriteStringList(sl: TStrings; FileName: TFileName);
var
  lIntSize, toWrite: LongInt;
  fil: file;
begin
  AssignFile(fil, filename);
  try
    Rewrite(fil, 1);
    try
      lIntSize := SizeOf(toWrite);
      toWrite := Length(sl.Text);
      BlockWrite(fil, toWrite, lIntSize);
      if toWrite > 0 then
        BlockWrite(fil, sl.Text[1], toWrite);
    finally
      CloseFile(fil);
    end;
  except
  end;
end;

procedure BlockReadStringList(sl: TStrings; FileName: TFileName);
var
  s: string;
  lIntLth,
  lth: LongInt;
  fil: file;
begin
  AssignFile(fil, filename);
  try
    Reset(fil, 1);
    lIntLth := SizeOf(lth);
    try
      BlockRead(fil, lth, lIntLth);
      if lth > 0
        then begin
          SetLength(s, lth);
          BlockRead(fil, s[1], lth);
          sl.Text := s;
        end
      else sl.Text := '';
    finally
      CloseFile(fil);
    end;
  except
  end;
end;

// Testen:
procedure TfrmMain.Button1Click(Sender: TObject);
var
  SL: TStringList;
begin
  sl := TStringList.Create;
  try
    // Der Stringliste Items hinzufügen
    SL.Add('test1');
    SL.Add('test2');
    SL.Add('test3');
    // Stringliste in Datei speichern
    BlockWriteStringList(SL, 'c:\temp\test.dat');
    // Stringliste löschen
    SL.Clear;
    // StringListe laden
    BlockReadStringList(SL, 'c:\temp\test.dat');
    // 2. Item der StringListe anzeigen
    ShowMessage(SL[1]);
  finally
    SL.Free;
  end;
end;
Thomas
  Mit Zitat antworten Zitat