Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit Sequentiellen Dateien und Records (https://www.delphipraxis.net/71155-probleme-mit-sequentiellen-dateien-und-records.html)

bg 11 9. Jun 2006 22:15


Probleme mit Sequentiellen Dateien und Records
 
Bevor ich mein Problem schildere eine kleine Warnung:
Ich bin nur ein winziger Schüler, für die Schule und aus Spaß mit Delphi programmiert =>
leider kein Profi....

Ich versuche gerade für die Schule ein Listenprogramm zu erstellen und save- und open-Dialog zu verwenden um die Liste zu speichern.
Meine Speicher-Prozedur sieht wie folgt aus.

Delphi-Quellcode:
procedure Sortliste.speichern(dtname:string);
var daten:lsatz; mst:textfile; f:textfile; b:string; e:tstrings;
begin

   daten.lname:=(self.aktuelles as kontakt).Name;
   daten.lemail:=(self.aktuelles as kontakt).Email;
   b:= (self.aktuelles as kontakt).Name+ (self.aktuelles as kontakt).Email;
   AssignFile(F, dtname);
   rewrite(f);
   write(f,b);
   close(f);


end;
Ich würde nun gerne einfach statt die Daten in einen String laden zu müssen, wie es hier 'b' ist, einen langen Record (hier:daten) benutzen. Allerdings nimmt write anscheinend nur Strings an!
Daher eine wahrscheinlich dumme Frage:
Wie kann ich die Daten einer Liste, die den Namen der Person und der passenden Mail-Adresse nach dem Alphabet geordnet beinhaltet, in so in einen Record packen, dass write ihn annimmt und ich diesen problemlos wieder einlesen kann???

Ich würde mich über einige rasche Antworten freuen, da ich das Programm spätestens am Montag fertig bekommen muss. Vielen Dank im Vorraus!

mfg Bengo

PS: Ich bin zwar Schüler, dies ist aber eine freiwillige zusätzliche Leistung, die ich erbringe. Außerdem habe ich das gesamte Programm fertig und schlage mich nur noch mit diesem Problem rum => keiner kann mir vorwerfen, ich wollte, dass andere meine Hausaufgaben machen! (ich arbeite etwas vor, was wir noch nicht hatten!!)

droppi 9. Jun 2006 22:20

Re: Probleme mit Sequentiellen Dateien und Records
 
du benutzt anscheinend file of char oder sowas. versuch es mal mit file of deinrecordname. damit kannst du records in dateien speichern.

bg 11 9. Jun 2006 22:26

Re: Probleme mit Sequentiellen Dateien und Records
 
Das ist es ja! Ich benutze noch kein File of... irgendetwas, weil ich gerade das noch nicht weiß, kenne, verstehe...
Kann mir das einer erklären???
Bidde!!!

droppi 9. Jun 2006 22:36

Re: Probleme mit Sequentiellen Dateien und Records
 
hier ist ein gutes tutorial zu typisierten dateien. hier

du könntest zum speichern aber auch ini dateien verwenden.
hier ein tutorial.

bg 11 9. Jun 2006 22:42

Re: Probleme mit Sequentiellen Dateien und Records
 
ES HAT LANGE GEDAUERT...

Aber ich glaube nun zu wissen, was ich falsch gemacht hatte!!

Danke für deine Hilfe!!

himitsu 10. Jun 2006 00:22

Re: Probleme mit Sequentiellen Dateien und Records
 
Es wäre ja nicht schlecht, wenn du dein neues Wissen mit uns teilst ... vielleicht haben ja mal andere ein ähnliches Problem ;)

bg 11 10. Jun 2006 11:36

Re: Probleme mit Sequentiellen Dateien und Records
 
Najut!!
Ich werde mein neues Wissen, das für die meisten Delphiprogrammierer zu den einfachen Grundlagen gehören wird, hier kundtun, wenn das Programm ganz fertig ist.
Das Speichern gelingt schon, nur beim Laden entsteht noch ein nerviger Fehler:


Delphi-Quellcode:
procedure Sortliste.laden(dtname:string);
var daten:lsatz; f:file of lsatz; lkontakt:kontakt;
begin

     assignFile(f,dtname);
     reset(f);
     while (not eof) do
     begin
     read(f,daten);
     lkontakt:=kontakt.init(daten.lname,daten.lemail);
     self.sortiertEinfuegen(lkontakt);
     
     end;
end;
Sobald ich das Laden ausführe und ich per Opendialog eine Datei ausgewählt habe und diese öffne, öffnet er diese Prozedur und zeigt mit dem grünen Pfeil auf die "while (not eof) do"-Zeile.
Wie man hier erkennt versuche ich den in die Datei geschriebenen Record wieder herauszulesen, in einen Kontakt zu schieben und dann wieder in meine Liste einzureihen.
Anschließend soll in der Textdatei zum nächsten Record gesprungen werden um den Vorgang solange zu wiederholen, bis ich am Ende der Datei angekommen bin (EndOfFile).
Die Fehlermeldung lautet:
Im Programm ... ist eine Exception der Klasse EInOutError aufgetreten. Meldung: 'E/A-Fehler 6'. Prozess wurde angehalten. ....

Auch hier wäre ich für Tipps dankbar.
Wenn ich die gesamten Record und Laden / Speichern - Fehler überbrückt habe, dann werde ich sowieso für die anderen Schüler eine Dokumentation vielleicht in Form einer pps anlegen.
Die kann ich dann ins Netz stellen.

mfg

Hawkeye219 10. Jun 2006 11:43

Re: Probleme mit Sequentiellen Dateien und Records
 
Hallo,

beim Aufruf der Funktion Eof hast du die Dateivariable vergessen:

Delphi-Quellcode:
while (not Eof(f)) do...
Außerdem solltest du nicht vergessen, die Datei auch wieder zu schließen.

Gruß Hawkeye

bg 11 10. Jun 2006 11:45

Re: Probleme mit Sequentiellen Dateien und Records
 
super!! DANKE!!

Das wird es sein!
Ich arbeite weiter daran!

bg 11 12. Jun 2006 10:33

Re: Probleme mit Sequentiellen Dateien und Records
 
Liste der Anhänge anzeigen (Anzahl: 2)
soooo....
Das Programm an für sich, mit dem ich anfangs Probleme hatte, ist fertig!
Es befindet sich im Anhang.
Die Dokumentation folgt noch.


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