![]() |
Kontaktprogramm, Probleme beim Dateiladen
Hallo Leute!
Ich habe mal wieder Probleme mit einem Projekt für die schule. Kann mir vll jemand helfen?
Delphi-Quellcode:
Also mein Problem liegt darin, dass ich ne Fehlermeldung bekomme, wenn ich versuche die datei zu laden. Das speichern klappt ja. Ne datei mit 10 zahlen ,also file of integer, kann ich auch so laden. Nur hier habe ich Probleme.
implementation
{$R *.dfm} type TMensch= record name,vname,tel,handy,email,ort,strasse,post,icq:string[100]; end; var typ:array of TMensch; i:integer; pr:boolean; procedure TForm1.FormCreate(Sender: TObject); var f:file of tmensch; l:integer; begin pr:=true; i:=1; end; procedure TForm1.Button1Click(Sender: TObject); var d,a:integer; begin pr:=false; a:=0; setlength(typ,i); with typ[i-1] do begin name:=Edit2.text; vname:=Edit1.text; Ort:=Edit4.text; Handy:=Edit9.text; Tel:=Edit8.text; icq:=Edit7.text; Strasse:=Edit5.text; Post:=Edit3.text; email:=Edit6.text; end; inc(i); Form1.Leeren; Edit1.SetFocus; end; procedure TForm1.Button2Click(Sender: TObject); var s:integer; begin Listbox1.clear; for s:=1 to i-1 do begin with typ[s-1] do begin with listbox1.Items do begin add('Vorname: '+vname); add('Name: '+name); add('Adresse: '); add('Postleitzahl: '+post); add('Ort: '+ort); add('Straße: '+strasse); add('Kontaktinformationen: '); add('E-Mail: '+email); add('ICQ: '+icq); add('Telefon: '+tel); add('Handy: '+handy); add('------------------------------------------------------'); end; end; end; end; procedure TForm1.Leeren; var a:integer; begin for a := 1 to 9 do begin with TEdit(findcomponent('Edit'+inttostr(a))) do text := ''; end; end; procedure TForm1.Restart1Click(Sender: TObject); begin Listbox1.clear; Form1.Leeren; Edit1.SetFocus; i:=1; end; procedure TForm1.Ende1Click(Sender: TObject); begin if pr=true then close else showmessage('Es wurde nicht gespeichert'); end; procedure TForm1.Button3Click(Sender: TObject); var a:integer; begin Listbox1.clear; if radiobutton1.Checked then for a:=low(typ) to high(typ) do if typ[a].name=Edit10.Text then begin with typ[a] do begin with listbox1.Items do begin add('Vorname: '+vname); add('Name: '+name); add('Adresse: '); add('Postleitzahl: '+post); add('Ort: '+ort); add('Straße: '+strasse); add('Kontaktinformationen: '); add('E-Mail: '+email); add('ICQ: '+icq); add('Telefon: '+tel); add('Handy: '+handy); add('------------------------------------------------------'); end; end; end; if radiobutton2.Checked then for a:=low(typ) to high(typ) do if typ[a].vname=Edit10.Text then begin with typ[a] do begin with listbox1.Items do begin add('Vorname: '+vname); add('Name: '+name); add('Adresse: '); add('Postleitzahl: '+post); add('Ort: '+ort); add('Straße: '+strasse); add('Kontaktinformationen: '); add('E-Mail: '+email); add('ICQ: '+icq); add('Telefon: '+tel); add('Handy: '+handy); add('------------------------------------------------------'); end; end; end; if radiobutton3.Checked then for a:=low(typ) to high(typ) do if typ[a].post=Edit10.Text then begin with typ[a] do begin with listbox1.Items do begin add('Vorname: '+vname); add('Name: '+name); add('Adresse: '); add('Postleitzahl: '+post); add('Ort: '+ort); add('Straße: '+strasse); add('Kontaktinformationen: '); add('E-Mail: '+email); add('ICQ: '+icq); add('Telefon: '+tel); add('Handy: '+handy); add('------------------------------------------------------'); end; end; end; end; procedure TForm1.Speichern1Click(Sender: TObject); var t:file of Tmensch; g:integer; begin if savedialog1.Execute then begin assignfile(t,savedialog1.FileName+copy(savedialog1.Filter,12,4)); if fileexists(savedialog1.FileName) then begin deletefile(savedialog1.FileName); rewrite(t); for g:=0 to high(typ) do write(t,typ[g]); closefile(t); pr:=true; end else begin rewrite(t); for g:=0 to high(typ) do write(t,typ[g]); closefile(t); pr:=true; end; end; end; procedure TForm1.Laden1Click(Sender: TObject); var t:file of Tmensch; var x: tmensch; g:integer; begin if pr= false then showmessage('Bitte zuerst speichern'); if opendialog1.Execute then begin if fileexists(opendialog1.filename) then begin pr:=false; assignfile(t,opendialog1.filename); reset(t); seek(t,0); g:=0; while not(eof(t)) do begin read(t,x); typ[g]:=x; inc(g); end; closefile(t); end else exit; end; end; end. Kann mir bitte jemand sagen, woran das liegt? Ich weis der letzte Teil ist noch nicht richtig formatiert und es sind noch globale variabeln drin, aber nur, weil mein infolehrer meinte es würde daran liegen. allerdings quatsch, wie wir bei einem anderen projekt in der schule gemerkt hatten. Wäre dankbar für eure Hilfe. MfG Damaster |
Re: Kontaktprogramm, Probleme beim Dateiladen
Du musst die Größe des zu füllenden Arrays zunächst festlegen, bevor Du es befüllst.
|
Re: Kontaktprogramm, Probleme beim Dateiladen
Poste mal die Fehlermeldung. Das mit dem Array ist Quatsch oder habe ich beidem unuebersichtlichen code was uwebersehen?
|
Re: Kontaktprogramm, Probleme beim Dateiladen
So, Quatsch? Was geschieht denn hier?
Zitat:
Delphi-Quellcode:
[/edit]
procedure TForm1.Laden1Click(Sender: TObject);
var t:file of Tmensch; x: tmensch; g:integer; begin if not pr then begin Showmessage('Bitte zuerst speichern'); exit; end; if opendialog1.Execute then begin if fileexists(opendialog1.filename) then begin pr:=false; assignfile(t,opendialog1.filename); reset(t); SetLength(typ,FileSize(t)); //Größe des Arrays an Anzahl der Records anpassen seek(t,0); g:=0; while not(eof(t)) do begin read(t,x); typ[g]:=x; inc(g); end; closefile(t); end; end; end; |
Re: Kontaktprogramm, Probleme beim Dateiladen
Danke dein Vorschlag hat funktioniert.
Eigentlich hätte es mir auffallen müssen. :gruebel: seis drum, manchmal sieht man den wald vor lauter bäumen nicht :wiejetzt: Ich musste zwar noch den Rest bei der Ausgabe umschreiben aber jetzt funktioniert alles wie es soll! :thumb: Ich weis, der code ist och unübersichtlich, das Programm aber auch noch nicht fertig. Nochmals vielen Dank! mfg Damaster |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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