![]() |
Re: Records
Bei
Delphi-Quellcode:
write(woerter,data);
|
Re: Records
Du solltest erst die Datei öffnen (reset, rewrite) und dann schreiben.
Ich vermute du verwechselst da was: reset - öffnen der Datei closefile - schließen der Datei |
Re: Records
Danke, aber selbst mit reset funzt es leider nicht... :wall:
Ich hab jetzt nochmal ein neus kleineres programm geschrieben. Nur zum füllen der Datenbank (enthält: edit1:**,edit2.**,Listview.**,ein button zum einlesen) edit1..: deutsch edit2..:englich (Wörterbuch Datenbank)
Delphi-Quellcode:
Leider tritt immer noch irgendein Fehler auf! Das Programm erstellt noch nichtmals die datei!? :gruebel:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; ListView1: TListView; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type woerterbuch = record de: array[1..5] of string[25]; en: array[1..5] of string[25]; end; vokabellist = record de: array[1..5] of string[25]; en: array[1..5] of string[25]; gewesen : boolean; klasse : word; end; var Form1 : TForm1; l : TListItem; data : woerterbuch; woerter : file of woerterbuch; vlist : file of vokabellist; loades : record eng,deu : string; de : array[1..5] of string[25]; en : array[1..5] of string[25]; gewesen : boolean; klasse : word; end; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; ltempe,ltempd:string; begin for i:=1 to 5 do begin if (pos(edit1.Text,','))>0 then begin loades.de[i]:=copy(edit1.Text,0,pos(edit1.Text,',')-1); ltempe:=edit1.Text; delete(ltempd,0,pos(edit1.Text,',')+1); edit1.Text:=ltempd; end else loades.de[i]:=copy(edit1.Text,0,length(edit1.Text)); end; for i:=1 to 5 do begin if (pos(edit2.Text,','))>0 then begin loades.en[i]:=copy(edit2.Text,0,pos(edit2.Text,',')-1); ltempe:=edit2.Text; delete(ltempe,0,pos(edit2.Text,',')+1); edit2.Text:=ltempe; end else loades.en[i]:=copy(edit2.Text,0,length(edit2.Text)); end; assignFile(woerter,'Datenbank.rec'); reset(woerter); if FileExists('Datenbank.rec') then ReSet(woerter) else ReWrite(woerter); for i:=1 to 5 do begin data.de[i]:=loades.de[i]; data.en[i]:=loades.en[i]; write(woerter,data); end; closefile(woerter); with listview1.items.add do begin l.Caption:=ltempd; l.SubItems.Add(ltempe); end; end; end. Kann mir bitte jemand helfen!!! :hello: DANKE!!! MFG magsec_87 :arrow: PS: Die einleseform:zB: "Hallo, Hi, Guten Tag" <bis zu fünf Wortteile getrennt durch kommas!! |
Re: Records
Was machst denn du da?
Delphi-Quellcode:
Erst schießen und dann fragen, wen man getroffen hat mögen auch die Rechner nicht :mrgreen:
// Dateivariable initialisieren
assignFile(woerter,'Datenbank.rec'); //Datei öffnen (hier kracht es, wenn die Datei nicht vorhanden ist) reset(woerter); //und jetzt erst fragen, ob die Datei überhaupt existiert if FileExists('Datenbank.rec') then ReSet(woerter) else ReWrite(woerter); |
Re: Records
Ja hast recht, aber auch wenn ich for der abfrage das reset weglasse bleibt der trotzdem hängen!!!
weist du auchdarauf eine lösung?? Kann es vielleicht mit dem speichertyp zusammenliegen??? Ich weis nämlich nicht ob man arrays speichern kann! |
Re: Records
Hi,
bei mir kam hier ein Fehler:
Delphi-Quellcode:
var li : TListItem; ... closefile(woerter); li := ListView1.Items.Add;//so geht es bei mit li.Caption:= ltempd; li.SubItems.Add(ltempe); (*with listview1.items.add do begin l.Caption:=ltempd; l.SubItems.Add(ltempe); end; *) |
Re: Records
Es funktioniert leider immer noch nicht, obwohl ich jetzt keine arrays mehr speichr und eure vorschläge berücksichtigt habe.
Einziger positiver effekt: Keine Fehlermeldung mehr, dafür macht das programm jetzt garnichts mehr.
Delphi-Quellcode:
Wieder die glsichen vorraussetzungen: Listview;zwei edits: eins für deutsch andere englisch; und ein buttton fürs speichern und eintragen
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; ListView1: TListView; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type woerterbuch = record de1,de2,de3,de4,de5,de,en1,en2,en3,en4,en5,en:string[25]; end; vokabellist = record de1,de2,de3,de4,de5,de,en1,en2,en3,en4,en5,en:string[25]; gewesen : boolean; klasse : word; end; var Form1 : TForm1; l : TListItem; data : woerterbuch; woerter : file of woerterbuch; vlist : file of vokabellist; loades : record eng,deu : string; de : array[1..5] of string[25]; en : array[1..5] of string[25]; gewesen : boolean; klasse : word; end; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:integer; ltempe,ltempd:string; begin if (edit1.text<>'') or (edit2.text<>'') then begin if (pos(edit1.Text,','))>0 then begin for i:=1 to 5 do begin loades.de[i]:=copy(edit1.Text,0,pos(edit1.Text,',')-1); ltempd:=edit1.Text; delete(ltempd,0,pos(edit1.Text,',')+1); edit1.Text:=ltempd; showmessage('ltempd: '+ltempd); end; if pos(edit1.Text,',')=0 then begin ltempd:=edit1.Text; loades.de[1]:=copy(edit1.Text,0,length(edit1.Text)); loades.de[2]:=''; loades.de[2]:=''; loades.de[3]:=''; loades.de[4]:=''; end; end; if (pos(edit2.Text,','))>0 then begin for i:=1 to 5 do begin loades.en[i]:=copy(edit2.Text,0,pos(edit2.Text,',')-1); ltempe:=edit2.Text; delete(ltempe,0,pos(edit2.Text,',')+1); edit2.Text:=ltempe; end; if pos(edit2.Text,',')=0 then begin ltempe:=edit2.Text; loades.en[1]:=copy(edit2.Text,0,length(edit2.Text)); loades.en[2]:=''; loades.en[2]:=''; loades.en[3]:=''; loades.en[4]:=''; end; end; assignFile(woerter,'Datenbank.rec'); if FileExists('Datenbank.rec') then ReSet(woerter) else ReWrite(woerter); begin data.de:=ltempd; data.de1:=loades.de[1]; data.de2:=loades.de[2]; data.de3:=loades.de[3]; data.de4:=loades.de[4]; data.de5:=loades.de[5]; data.en:=ltempe; data.en1:=loades.en[1]; data.en2:=loades.en[2]; data.en3:=loades.en[3]; data.en4:=loades.en[4]; data.en5:=loades.en[5]; write(woerter,data); end; closefile(woerter); l := ListView1.Items.Add; l.Caption:= ltempd; l.SubItems.Add(ltempe); end; end; end. Langsam verzweifle ich. |
Re: Records
Hallo,
Zitat:
Delphi-Quellcode:
Das hast du gleich an etlichen Stellen zu stehen.
if (pos(',', edit1.Text))>0 then
Zitat:
Zitat:
Delphi-Quellcode:
delete(ltempd, 1, pos(',',edit1.Text));
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 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