AGB  ·  Datenschutz  ·  Impressum  







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

AV bei Records laden

Ein Thema von Neutral General · begonnen am 27. Jun 2006 · letzter Beitrag vom 27. Jun 2006
 
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AV bei Records laden

  Alt 27. Jun 2006, 17:30
Hi,

Also erst mal meine Records:
Delphi-Quellcode:
rZinsen = packed record
 Start : TDateTime;
 Intervall: Zinsintervall;
 Kind : Zinsart;
 Value : Word;
end;

rSchulden = packed record
 Bei : String;
 Anlass : String;
 Betrag : Single;
 Zinsen : rZinsen;
 Gezahlt: Boolean;
end;
dann hab ich ne Klasse die die Schulden verwaltet:

Delphi-Quellcode:
TSchuldenliste = class
   private
    FStringgrid: TStringgrid;
    FItems: Array of rSchulden;
    FCount: Word;
    function GetItem(Index: Integer): rSchulden;
    procedure SetItem(Index: Integer; const Value: rSchulden);
   public
    constructor Create(Stringgrid: TStringgrid);
    procedure Add(Schulden: rSchulden);
    property Items[Index: Integer]: rSchulden read GetItem write SetItem;
    property Count: Word read FCount write FCount;
    procedure SaveToFile(Filename: String);
    procedure LoadFromFile(Filename: String);
  end;
und beim Laden von den Records gibts jetzt irgendwie beim zweiten Record einen Fehler.. das erste wird fehlerlos geladen (was heißt das es eigentlich nicht am speichern liegen kann.. weshalb ich die Speichern Procedure jetzt aus Platzgründen erst mal nicht poste).

Delphi-Quellcode:
procedure TSchuldenliste.LoadFromFile(Filename: String);
var MS: TMemoryStream;
    i, len: Integer;
begin
  MS := TMemoryStream.Create;
  Ms.LoadFromFile(Filename);
  Ms.Position := 0;

  Ms.Read(FCount, SizeOf(Word));
  SetLength(FItems,FCount);

  for i:= 0 to FCount-1 do begin
   Ms.Read(Len, SizeOf(Integer));
   SetLength(FItems[i].Bei,len);
   Ms.Read(FItems[i].Bei[1], len);
   Ms.Read(Len, SizeOf(Integer));
   SetLength(FItems[i].Anlass,len);
   Ms.Read(FItems[i].Anlass[1], len);
   Ms.Read(FItems[i].Betrag, SizeOf(Single));
   Ms.Read(FItems[i].Zinsen.Start, SizeOf(Double));
   Ms.Read(FItems[i].Zinsen.Intervall, SizeOf(Zinsintervall));
   Ms.Read(FItems[i].Zinsen.Kind, SizeOf(Zinsart));
   Ms.Read(FItems[i].Zinsen.Value, SizeOf(Integer));
   Ms.Read(FItems[i].Gezahlt, SizeOf(Boolean));
  end;
  
  Ms.Free; // Mit try-except etc hab ichs nicht so :D
end;
Wo liegt das Problem ?
Das Array FItems ist auch groß genug nach SetLength.. Aber was läuft denn da falsch ?

PS: Ach ja der Debugger bleibt bei beim zweiten mal beim ersten SetLength stehn...

Gruß
Neutral General
Michael
  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 03:12 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