AGB  ·  Datenschutz  ·  Impressum  







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

Collections speichern

Ein Thema von CalganX · begonnen am 9. Jan 2005 · letzter Beitrag vom 23. Jan 2005
 
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Collections speichern

  Alt 9. Jan 2005, 18:38
Hi,
ich habe für das Speichern einer Profile mir eine Collection angelegt, wo jedes Collection-Item die gewünschten Daten enthält. Für das Speichern und Laden verwende ich Streams. Dafür sehen meine Methoden folgendermaßen aus:
Delphi-Quellcode:
procedure TMyClass.LoadProfiles;
var
  fProfileData: TFileStream;
  iCount: Integer;
  idx: Integer;
  aItem: TMyProfile;
begin
  {Sicherheitsüberprüfungen}
  if FFileName = 'then Exit;
  if not FileExists(FFileName) then begin
    raise EInOutError.Create(szFileMustExists);
  end;

  {Profile laden}
  fProfileData := TFileStream.Create(FFileName, fmOpenRead);
  try
    fProfileData.Read(iCount, sizeof(Integer));

    for idx := 0 to iCount do begin
      {Collection-Item erstellen und zur Collection hinzufügen}
      aItem := TXcopyProfile.Create(FProfiles);
      fProfileData.Read(aItem, sizeof(TMyProfile));
    end;
  finally
    fProfileData.Free;
  end;
end;

procedure TMyClass.SaveProfiles;
var
  fProfileData: TFileStream;
  idx, iCount: Integer;
  aItem: TMyProfile;
begin
  if FFileName = 'then Exit;

  {Profile speichern}
  fProfileData := TFileStream.Create(FFileName, fmCreate);
  try
    iCount := FProfiles.Count;
    fProfileData.Write(iCount, sizeof(Integer));
    for idx:=0 to iCount-1 do begin
      {Einzelne Collection-Items schreiben}
      aItem := (FProfiles.Items[idx] as TMyProfile);
      fProfileData.Write(aItem, sizeof(TMyProfile))
    end;
  finally
    fProfileData.Free;
  end;
end;
Angenommen beim Starten ist die gesamte Collection leer. Und wenn ich jetzt zur Laufzeit ein Item hinzufüge, wird das auch richtig angezeigt.
Beim nächsten Start (also nach dem Speichern und dem Neu Laden der Collection) jedoch gibt es statt einem Item zwei und beide enthalten scheinbar keine Daten (sind also leer).

Woran liegt das? Was habe ich beim Laden/Speichern gemacht?

Chris
  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 02:43 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-2025 by Thomas Breitkreuz