Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record: Read/Write FILE OF TYPE (https://www.delphipraxis.net/129302-record-read-write-file-type.html)

Ironmaster 16. Feb 2009 18:15


Record: Read/Write FILE OF TYPE
 
Hallo,

zuerst einmal, ich habe mir folgenden Datentyp erstellt:
Delphi-Quellcode:
type List = ^Elem;
     Elem = record
            Name: String;
            Date: TDate;
            Time: TTime;
            next: List;
     end;

     Data = File Of List;
...eine einfach verkettete Liste mit einem Zeiger.
Dafür habe ich mir dann ein paar Funktionen und Prozeduren gebastelt.
Probleme macht aber das Laden und Speichern dieses Datentyps.

Folgende Prozedur bzw. Funktion benutz ich dafür:
Delphi-Quellcode:
procedure ListToFile(FileName: String; l: List);
var f: Data;
begin
 AssignFile(f, FileName);
 Rewrite(f);
 Write(f, l);
 CloseFile(f)
end;

function ListFromFile(FileName: String): List;
var f: Data; l: List;
begin
 AssignFile(f, FileName);
 Reset(f);
 if not Eof(f) then Read(f, l);
 CloseFile(f);
 ListFromFile := l
end;
Das Speichern und Laden funktioniert zur Laufzeit des Programmes einwandfrei.
Wenn ich das Programm jedoch neustarte und die gespeicherte Datei lade und Name, Date und Time auslese, bekomm ich einen Fehler "Access Violation". FileSize gibt mir jedoch 1 zurück. Also befindet sich noch ein Element in der Datei.

Habe ich die Datei falsch gespeichert oder liegt es an der verketteten Liste???

Ich komm da leider nicht alleine weiter...

nuclearping 16. Feb 2009 18:20

Re: Record: Read/Write FILE OF TYPE
 
New (l) fehlt beim Laden. L ist nicht initialisiert.

Und du solltest dich an Pascal'sche Namenskonventionen halten (PList = ^TElem; TElem = record ...)

sirius 16. Feb 2009 18:24

Re: Record: Read/Write FILE OF TYPE
 
Du speicherst nur Zeiger und keine Records.
So wird das nix.

Da musst du wohl ein ganzes Stück weiter ausholen. In der DP gibt es zum speichern von Records ne menge Threads.

Mr_G 16. Feb 2009 18:27

Re: Record: Read/Write FILE OF TYPE
 
:lol: ... vor 20 min

nuclearping 16. Feb 2009 18:35

Re: Record: Read/Write FILE OF TYPE
 
Zitat:

Zitat von sirius
Du speicherst nur Zeiger und keine Records.

Stimmt. Seh ich jetzt auch erst. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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