![]() |
aufrufen von Record
Ich würde gerne nen record nach der Speicherung wieder aufrufen und die einzelnen Unterpunkte bearbeiten(Buchname...)
Delphi-Quellcode:
Type TBuch=Record
Buchname: String[60]; Autor: String[40]; Verlag: String[40]; ISBN: String[13]; end;
Delphi-Quellcode:
so speicher ich den
AssignFile(Buchdatei, 'C:\Users\user\Documents\Bücher\' + Buch.Buchname + '.dat');
rewrite(Buchdatei); write(Buchdatei, Buch); closefile(Buchdatei); showmessage('Buch wurde eingetragen'); und jetzt will ich ihn halt wieder aufrufen und alles nach belieben bearbeiten. Danke im Vorraus für Hilfe |
Re: aufrufen von Record
In ganz kurzer Form ohne Fehlerbehandlungen:
Delphi-Quellcode:
AssignFile(Buchdatei, 'C:\Users\user\Documents\Bücher\' + Buch.Buchname + '.dat');
reset(Buchdatei); read(Buchdatei, Buch); closefile(Buchdatei); showmessage('Buch wurde ausgelesen'); |
Re: aufrufen von Record
und dann kann ich da einfach wieder auf TBuch zugreifen (is ja keine einfache Variable)?
|
Re: aufrufen von Record
Versuch' s ;)
|
Re: aufrufen von Record
Das Problem ist ja das ich mehrere Bücher anlege und die Buchnamen die gleichzeitig auch die Dateinamen sind (Harry Potter.dat)
Diese Speichere ich nochmal extra als .dat (in dieser werden die Dateinamen immer ergänzt) so kann ich Später die Bücher wieder aufrufen aber wie kann ich dann noch auf Buchname und Verlag zugreifen und die ausgeben???? |
Re: aufrufen von Record
Delphi-Quellcode:
AssignFile(Buchdatei, 'C:\Users\user\Documents\Bücher\' + Buch.Buchname + '.dat');
reset(Buchdatei); read(Buchdatei, Buch); closefile(Buchdatei); showmessage(Buch.Autor); |
Re: aufrufen von Record
Delphi-Quellcode:
begin
if (RadioGroup1.ItemIndex=0) then Suche := 'Buchname'; if (RadioGroup1.ItemIndex=1) then Suche := 'Autor'; if (RadioGroup1.ItemIndex=2) then Suche := 'Verlag'; if (RadioGroup1.ItemIndex=3) then Suche := 'ISBN'; if (FileExists('C:\Users\user\Documents\Bücher\111Buchtitel111.dat')) then begin AssignFile(Buecher, 'C:\Users\user\Documents\Bücher\111Buchtitel111.dat'); reset(Buecher); Groesse:=filesize(Buecher); For AlleBuecher := 1 to Groesse do begin read(Buecher, x); AssignFile(Buchdatei, 'C:\Users\user\Documents\Bücher\' + x + '.dat'); reset(Buchdatei); read(Buchdatei, Buch.Suche);//<---das Funzt nciht da suche kein Element von TBuch ist aber wenn ich zum Test einfach mal Buch.Autor hinpacke gehts auch nicht (Buch is angeblich nihct mit shortstring kompatibel) AttributSuche:=Inputbox('Suche','Suchbegriff eingeben',''); if (AttributSuche=Buch.Suche) then Form3.RadioGroup3.Items.Add(x);//<--- und hier werden keine Items in der RadioGroup hinzugefügt die ich dann auswählen könnte(ka why) closefile(Buchdatei); HELP :?: :?: :?: |
Re: aufrufen von Record
Ich finde Deine Logik ein wenig komisch. Wieso schreibst Du nicht alle Bücher in eine Datei? Dann könntest Du sie in ein dynamisches Array laden und damit dann hantieren. Und Du musst den Record schon im Ganzen einlesen und dann erst auf die Felder zugreifen.
|
Re: aufrufen von Record
Delphi-Quellcode:
So dürfte es eigl funzen aber er Zeigt immer an das 0 Bücher gefunden wurden (Wenn ich Verlag wähle und Carlsen eingebe müsste er mindestens eins Finden)
procedure TForm3.FormCreate(Sender: TObject);
begin forcedirectories('C:\Users\user\Documents\Bücher'); AssignFile(Buecher, 'C:\Users\user\Documents\Bücher\111Buchtitel111.dat'); reset(Buecher); Groesse:=filesize(Buecher); for AlleBuecher := 1 to Groesse do begin read(Buecher, x); Form3.RadioGroup2.Items.Add(x);//<---Was isn an dem Befehl falsch (eigl müsste ich doch da als wenn ich aufm Formular an der RadioGroup items dazugegeben hätte es haben müssen oder???) end; closefile(Buecher) end; procedure TForm3.Button2Click(Sender: TObject); begin if (RadioGroup1.ItemIndex=0) then Suche := 'Buchname'; if (RadioGroup1.ItemIndex=1) then Suche := 'Autor'; if (RadioGroup1.ItemIndex=2) then Suche := 'Verlag'; if (RadioGroup1.ItemIndex=3) then Suche := 'ISBN'; if (FileExists('C:\Users\user\Documents\Bücher\111Buchtitel111.dat')) then begin AssignFile(Buecher, 'C:\Users\user\Documents\Bücher\111Buchtitel111.dat'); reset(Buecher); Groesse:=filesize(Buecher); AttributSuche:=Inputbox('Suche','Suchbegriff eingeben',''); For AlleBuecher := 1 to Groesse do begin read(Buecher, x); AssignFile(Buchdatei, 'C:\Users\user\Documents\Bücher\' + x + '.dat'); reset(Buchdatei); read(Buchdatei, Buch); if Suche='Buchname' then begin if (AttributSuche=Buch.Buchname) then Form3.RadioGroup3.Items.Add(x); closefile(Buchdatei); Funde:=Funde+1; end; if Suche='Autor' then begin if (AttributSuche=Buch.Autor) then Form3.RadioGroup3.Items.Add(x); closefile(Buchdatei); Funde:=Funde+1; end; if Suche='Verlag' then begin if (AttributSuche=Buch.Verlag) then Form3.RadioGroup3.Items.Add(x); closefile(Buchdatei); Funde:=Funde+1; end; if Suche='ISBN' then begin if (AttributSuche=Buch.ISBN) then Form3.RadioGroup3.Items.Add(x); closefile(Buchdatei); Funde:=Funde+1; end; end; end; showmessage('Es wurden ' +IntToStr(Funde)+ ' Bücher gefunden'); end; end. Wissen sie/Weißt du was hier nicht stimmt???? |
Re: aufrufen von Record
Verrätst Du mir mal, was x eigentlich ist?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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