AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Stream Lesefehler" bei Laden via TFileStream

Offene Frage von "Gashunkification"
Ein Thema von Gashunkification · begonnen am 18. Mär 2012 · letzter Beitrag vom 19. Mär 2012
 
Gashunkification

Registriert seit: 18. Mär 2012
9 Beiträge
 
#1

"Stream Lesefehler" bei Laden via TFileStream

  Alt 18. Mär 2012, 20:18
Hallo

Ich habe 2 Objeke, ein Item und eine ItemList.

Das Item ist wie folgt aufgebaut

Delphi-Quellcode:
  TItem = record
    ID: Integer; // wird automatisch gesetzt
    Name: String;
    Info: String;
  end; // TItem
Und die ItemList ist eine ganze Klasse, die ein array of TItem hat und dieses dann mit entsprechenden Methoden verwaltet.

Weiterhin habe ich eine Klasse TListHandler, da ich die ItemList in mehreren Forms brauche. Der Listhandler hat auch die Save und Load Methoden. Bei denen mache ich dann offensichtlich etwas falsch:

(lngth ist die Länge des Dynmaischen arrays, die ich in einer seperaten Datei (ListenName.list~) speichere )

Delphi-Quellcode:
// Load a existing List from a specific Filepath
function TListHandler.Load(const FilePath, Pathlngth: string): TItemList;
var F_Stream: TFileStream;
    F_tmp: TFileStream;
    i: Integer;
    lngth: Integer;
    Name, Info: String;
begin
  try
    F_Stream := TFileStream.Create(FilePath, fmOpenRead);
    F_tmp := TFileStream.Create(Pathlngth, fmOpenRead);
    F_tmp.ReadBuffer(lngth, SizeOf(lngth));
    for i := 0 to lngth-1 do
    begin
      Name := List.Item[i].Name;
      Info := List.Item[i].Info;
      F_Stream.ReadBuffer(Name[1], SizeOf(Name));
      F_Stream.ReadBuffer(Info[1], SizeOf(Info));
      List.Length := lngth;
    end;
  finally
    F_Stream.Free;
    F_tmp.Free;
  end; // if
end; // Load

//##############################################################################

// Save the whole List as it is to a pre-specified Filepath
procedure TListHandler.Save(const FilePath, Pathlngth: String);
var FileStream: TFileStream;
    F_tmp: TFileStream;
    i: Integer;
    lngth: Integer;
    Name, Info: String;
begin
  try
    FileStream := TFileStream.Create(FilePath, fmCreate);
    F_tmp := TFileStream.Create(Pathlngth, fmCreate);
    lngth := List.Length;
    F_tmp.WriteBuffer(lngth, SizeOf(lngth));
    for i := 0 to List.Length-1 do
    begin
      Name := List.Item[i].Name;
      Info := List.Item[i].Info;
      FileStream.WriteBuffer(Name[1], SizeOf(Name));
      FileStream.WriteBuffer(Info[1], SizeOF(Info));
    end;
  finally
    FileStream.Free;
    F_tmp.Free;
  end; // finally
end; // Save
Anbei (falls notwendig) noch die beiden Klassen TItemList und TListHandler
PS: Beide Klassen sind noch nicht fertig und entsprechende Methoden werden im letzten Zug ausgelagert.
Angehängte Dateien
Dateityp: pas U_TListHandler.pas (3,0 KB, 2x aufgerufen)
Dateityp: pas U_TItemList.pas (5,0 KB, 2x aufgerufen)

Geändert von Gashunkification (18. Mär 2012 um 20:19 Uhr) Grund: Vergessen Anhänge hochzuladen
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz