Thema: Delphi Erkennen von Lines

Einzelnen Beitrag anzeigen

tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#22

Re: Erkennen von Lines

  Alt 3. Sep 2005, 13:26
Setz dich am besten mal mit Delphi-Referenz durchsuchenTFileStream auseinander.
Hmm oder ich schick dir mal ne Klasse die ich mir abgeleitet hab und direkt typisiert u.a. auch Strings schreiben und lesen kann.
Dann müsstest du ihm beim Laden nur noch folgenden Code (untested) schreiben:

Delphi-Quellcode:
type TEintrag = record
       Name: string;
       Preis: integer;
     end;
var Eintraege = array of TEintrag;

procedure Load(FileName: TFilename);
var i: Integer;
    Count: cardinal;
    F: TAdvFileStream; // Das ist meine Klasse...such ich dir noch raus und schick dir das
begin
  F := TAdvFileStream.Create(Filename, fmOpenRead);
  try
    Count := F.ReadCardinal; // Auslesen wieviele drin sind
   
    SetLength(Eintraege, Count); // Länge des Arrays setzen
    for i := 0 to (Count - 1) do
      with Eintraege[i] do begin // Und dann alle nacheinander auslesen
        Name := ReadStr;
        Preis := ReadInt;
      end;
  finally
    F.Free;
  end;
end;

// Beim Speichern alles einfach in der gleichen Reihenfolge wieder reinschreiben;
procedure Speichern(Filename: TFilename);
var i: integer;
    F: TAdvFileStream;
begin
  F := TAdvFileStream.Create(Filename, fmCreate);
  try
    F.WriteCardinal(length(Eintraege)); // Hier auch: erst abspeichern wie viele Einträge jetzt kommen
    
    for i := 0 to length(Eintraege) - 1 do
      with Eintraege[i] do begin // Dann nacheinander alle reinschreiben
        F.WriteStr(Name);
        F.WriteInt(Preis);
      end;
  finally
    F.Free;
  end;
end;
Nur mal so als grobe Übersicht.

@all:
Ich weiß, dass ihr mich jetzt gleich zerreißen werdet, weil's kein OOP ist und noch dazu globale Variablen verwendet. Ist aber ja auch nur ein Beispiel.

PS: Benutz doch bitte in Zukunft für Quellcode die Delphi-Tags! Das kann ja kein Mensch lesen so.

//edit
So hier auch die Unit
Angehängte Dateien
Dateityp: pas advancedstreams_307.pas (15,2 KB, 2x aufgerufen)
Christian
  Mit Zitat antworten Zitat