![]() |
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
danke erstmal :)
jetzt sind es gleich weniger fehler, nun sagt er mir er kennt positionieren nicht und CloseFile(datei); Buffer[p+1].name:=''; closeile meldet er flasch und name poste den code noch mal und mach einen anhang mit beta1.1
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; type Adresse = record name: string[50]; strasse: string[100]; plz: integer; ort: string[50]; end; var datei: file of Adresse; implementation procedure TForm1.FormCreate(Sender: TObject); var path: String; begin path := ExtractFilePath(ParamStr(0)); AssignFile(datei, path+'adressen.dat'); if FileExists(path+'adressen.dat') then ReSet(datei) else ReWrite(datei); end; procedure TForm1.FormDestroy(Sender: TObject); begin CloseFile(datei); end; procedure TForm1.positionieren(datensatz: integer); var aktdatensatz: Adresse; begin if (datensatz<0) or (datensatz>=FileSize(datei)) then exit else begin seek(datei, datensatz); read(datei, aktdatensatz); edit1.text:=aktdatensatz.name; edit2.text:=aktdatensatz.strasse; edit3.text:=IntToStr(aktdatensatz.plz); edit4.text:=aktdatensatz.ort; end; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin positionieren(0); end; procedure TForm1.Button2Click(Sender: TObject); begin positionieren(FilePos(datei)-2); end; procedure TForm1.Button3Click(Sender: TObject); begin positionieren(FilePos(datei)); end; procedure TForm1.Button4Click(Sender: TObject); begin positionieren(FileSize(datei)-1); end; procedure TForm1.Button5Click(Sender: TObject); const BufferSize = 32; var Buffer: array[0..BufferSize - 1] of Adresse; i, p: integer; begin Seek(datei,0); p:=0; end; CloseFile(datei); Buffer[p+1].name:=''; Buffer[p+1].strasse:=''; Buffer[p+1].plz:=0; Buffer[p+1].ort:=''; ReWrite(datei); for i:=0 to p do write(datei, Buffer[i]); positionieren(FileSize(datei)-1); end; procedure TForm1.Button7Click(Sender: TObject); var datensatz: Adresse; nr: integer; begin Seek(Datei,FilePos(Datei)-1); nr:=FilePos(datei); datensatz.name:=Edit1.Text; datensatz.strasse:=Edit2.Text; datensatz.plz:=StrToIntDef(Edit3.Text, -1); datensatz.ort:=Edit4.Text; write(datei,datensatz); positionieren(nr); end; end; procedure TForm1.Button6Click(Sender: TObject); begin const BufferSize = 32; procedure TForm1.Button6Click(Sender: TObject); var Buffer: array[0..BufferSize - 1] of Adresse; i, p: Integer; StartRecord, EndRecord: Integer; Max: Integer; begin Seek(Datei, FilePos(Datei)-1); StartRecord := FilePos(Datei) + 1; EndRecord := FileSize(Datei); while StartRecord < EndRecord do begin Max := BufferSize; if Max > EndRecord - StartRecord then Max := EndRecord - StartRecord; Seek(Datei, StartRecord); for i := 0 to Max - 1 do Read(Datei, Buffer[i]); Seek(Datei, StartRecord - 1); for i := 0 to Max - 1 do Write(Datei, Buffer[i]); inc(StartRecord); end; Truncate(Datei); Positionieren(StartRecord-1); end; end; end. |
AW: Schule Adressbuch
"positionieren" muss in die Definition von TForm1.
Also:
Delphi-Quellcode:
type
TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure positionieren(datensatz: integer); // HIER!!! private { Private-Deklarationen } public { Public-Deklarationen } end; |
AW: Schule Adressbuch
habe nur noch einen ehler
procedure TForm1.Button7Click(Sender: TObject); da makiert er mir Button7Click warum? hier noch mal den ganzen code
Delphi-Quellcode:
habe den code von haentschman als berichtigung uebernommen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure positionieren(datensatz: integer); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; type Adresse = record name: string[50]; strasse: string[100]; plz: integer; ort: string[50]; end; var datei: file of Adresse; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var path: String; begin path := ExtractFilePath(ParamStr(0)); AssignFile(datei, path+'adressen.dat'); if FileExists(path+'adressen.dat') then ReSet(datei) else ReWrite(datei); end; procedure TForm1.FormDestroy(Sender: TObject); begin CloseFile(datei); end; procedure TForm1.positionieren(datensatz: integer); var aktdatensatz: Adresse; begin if (datensatz<0) or (datensatz>=FileSize(datei)) then exit else begin seek(datei, datensatz); read(datei, aktdatensatz); edit1.text:=aktdatensatz.name; edit2.text:=aktdatensatz.strasse; edit3.text:=IntToStr(aktdatensatz.plz); edit4.text:=aktdatensatz.ort; end; end; procedure TForm1.Button1Click(Sender: TObject); begin positionieren(0); end; procedure TForm1.Button2Click(Sender: TObject); begin positionieren(FilePos(datei)-2); end; procedure TForm1.Button3Click(Sender: TObject); begin positionieren(FilePos(datei)); end; procedure TForm1.Button4Click(Sender: TObject); begin positionieren(FileSize(datei)-1); end; procedure TForm1.Button5Click(Sender: TObject); const BufferSize = 32; var Buffer: array[0..BufferSize - 1] of Adresse; i, p: integer; begin Seek(datei,0); p:=0; while not eof(datei) do begin Read(datei, Buffer[p]); inc(p); end; CloseFile(datei); Buffer[p+1].name:=''; Buffer[p+1].strasse:=''; Buffer[p+1].plz:=0; Buffer[p+1].ort:=''; ReWrite(datei); for i:=0 to p do begin write(datei, Buffer[i]); end; positionieren(FileSize(datei)-1); end; procedure TForm1.Button7Click(Sender: TObject); var datensatz: Adresse; nr: integer; begin Seek(Datei,FilePos(Datei)-1); nr:=FilePos(datei); datensatz.name:=Edit1.Text; datensatz.strasse:=Edit2.Text; datensatz.plz:=StrToIntDef(Edit3.Text, -1); datensatz.ort:=Edit4.Text; write(datei,datensatz); positionieren(nr); end; procedure TForm1.Button6Click(Sender: TObject); const BufferSize = 32; var Buffer: array[0..BufferSize - 1] of Adresse; i, p: Integer; StartRecord, EndRecord: Integer; Max: Integer; begin Seek(Datei, FilePos(Datei)-1); StartRecord := FilePos(Datei) + 1; EndRecord := FileSize(Datei); while StartRecord < EndRecord do begin Max := BufferSize; if Max > EndRecord - StartRecord then Max := EndRecord - StartRecord; Seek(Datei, StartRecord); for i := 0 to Max - 1 do begin Read(Datei, Buffer[i]); end; Seek(Datei, StartRecord - 1); for i := 0 to Max - 1 do begin Write(Datei, Buffer[i]); end; inc(StartRecord); end; Truncate(Datei); Positionieren(StartRecord-1); end; end. |
AW: Schule Adressbuch
Du musst hier
Delphi-Quellcode:
ein "procedure Button7Click(Sender: TObject);" noch hinzufügen. Alles, was mit "TForm1." beginnt, gehört da rein! :stupid:
type
TForm1 = class(TForm) [...] So, Besuch, ich bin raus... |
AW: Schule Adressbuch
danke wichtel dir noch einen schoenen abend.
wie genau fuege ich diesen ein? edit: hab es danke, wandel das ganze nun mal ein wenig um und hofe mach keine fehler... |
AW: Schule Adressbuch
Das Positionieren wurde ja schon gemacht, nun nochmal die Variable.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type Adresse = record name: string[50]; strasse: string[100]; plz: integer; ort: string[50]; end; TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private-Deklarationen } datei: file of Adresse; procedure positionieren(datensatz: integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); ... PS: Er meckerte doch Positionieren kenne er nicht. Recht hat er, denn schaut mal an der Stelle, wo das bemängelt hatte "hoch" ... ihr werdet dort nirgendwo eine Deklaration finden. (notfalls auch mal auf die Rechtschreibung schauen) Und schwups, wäre der Fehler klar gewesen, denn was man "noch" nicht kennt, das kann man auch nicht finden. |
AW: Schule Adressbuch
Tipp (wenn man sich seinen Quellcode komplett "zerschossen" hat):
* neue Form erstellen * Folgendes dort rein:
Delphi-Quellcode:
* mit dem Cursor auf
type
Adresse = record name: string[50]; strasse: string[100]; plz: integer; ort: string[50]; end; TForm1 = class(TForm) private { Private-Deklarationen } datei: file of Adresse; procedure positionieren(datensatz: integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation
Delphi-Quellcode:
und Strg+Shift+C
positionieren
* in die alte Form gehn * alle Komponenten (im Fenster) makieren, kopieren und in der neuen Form einfügen * ab jetzt das Projekt nicht speichern * dann über den OI alle Events neu erzeugen * * doppelt auf die Buttons klicken * * über den OI OnCreate und OnDestroy anlegen * aus dem alten Projekt die Prozedurinhalte in die neuen Prozeduren kopieren (Jede einzeln) * nun kann man wieder speichern (habt ihr zwischendurch gespeichert, dann muß man die noch leeren Prozeduren erneut erstellen, da sie entfernt wurden, weil der Compiler dachte die braucht keiner ... oder man schreibt erstmal überall schnell ein
Delphi-Quellcode:
zwischen BEGIN und END )
//
Oder man erstellt nur die jeweilige Prozedur, für welche man grade den Code neu einfügen will. |
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
so mal die geaenderte version als anhang.
hab folgendes problem. auch wenn er keine fehler anteigt, geht das programm nicht richtig. er speichert nix sondern zeigt nur eine ehlermeldung an. habt ihr da eine erklärung? kann wer helfen?
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit5: TEdit; Label5: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure positionieren(datensatz: integer); procedure Button7Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; type Adresse = record Vorname: string[50]; Nachname: string[50]; Wohnort: string[100]; Alter: integer; Geburtstag: string[50]; end; var datei: file of Adresse; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var path: String; begin path := ExtractFilePath(ParamStr(0)); AssignFile(datei, path+'adressen.dat'); if FileExists(path+'adressen.dat') then ReSet(datei) else ReWrite(datei); end; procedure TForm1.FormDestroy(Sender: TObject); begin CloseFile(datei); end; procedure TForm1.positionieren(datensatz: integer); var aktdatensatz: Adresse; begin if (datensatz<0) or (datensatz>=FileSize(datei)) then exit else begin seek(datei, datensatz); read(datei, aktdatensatz); edit1.text:=aktdatensatz.Vorname; edit2.text:=aktdatensatz.Wohnort; edit3.text:=IntToStr(aktdatensatz.Alter); edit4.text:=aktdatensatz.Geburtstag; edit5.text:=aktdatensatz.Nachname; end; end; procedure TForm1.Button1Click(Sender: TObject); begin positionieren(0); end; procedure TForm1.Button2Click(Sender: TObject); begin positionieren(FilePos(datei)-2); end; procedure TForm1.Button3Click(Sender: TObject); begin positionieren(FilePos(datei)); end; procedure TForm1.Button4Click(Sender: TObject); begin positionieren(FileSize(datei)-1); end; procedure TForm1.Button5Click(Sender: TObject); const BufferSize = 32; var Buffer: array[0..BufferSize - 1] of Adresse; i, p: integer; begin Seek(datei,0); p:=0; while not eof(datei) do begin Read(datei, Buffer[p]); inc(p); end; CloseFile(datei); Buffer[p+1].Vorname:=''; Buffer[p+1].Wohnort:=''; Buffer[p+1].Alter:=0; Buffer[p+1].Geburtstag:=''; Buffer[p+1].Nachname:=''; ReWrite(datei); for i:=0 to p do begin write(datei, Buffer[i]); end; positionieren(FileSize(datei)-1); end; procedure TForm1.Button7Click(Sender: TObject); var datensatz: Adresse; nr: integer; begin Seek(Datei,FilePos(Datei)-1); nr:=FilePos(datei); datensatz.Vorname:=Edit1.Text; datensatz.Wohnort:=Edit2.Text; datensatz.Alter:=StrToIntDef(Edit3.Text, -1); datensatz.Geburtstag:=Edit4.Text; datensatz.Nachname:=Edit5.Text; write(datei,datensatz); positionieren(nr); end; procedure TForm1.Button6Click(Sender: TObject); const BufferSize = 32; var Buffer: array[0..BufferSize - 1] of Adresse; i, p: Integer; StartRecord, EndRecord: Integer; Max: Integer; begin Seek(Datei, FilePos(Datei)-1); StartRecord := FilePos(Datei) + 1; EndRecord := FileSize(Datei); while StartRecord < EndRecord do begin Max := BufferSize; if Max > EndRecord - StartRecord then Max := EndRecord - StartRecord; Seek(Datei, StartRecord); for i := 0 to Max - 1 do begin Read(Datei, Buffer[i]); end; Seek(Datei, StartRecord - 1); for i := 0 to Max - 1 do begin Write(Datei, Buffer[i]); end; inc(StartRecord); end; Truncate(Datei); Positionieren(StartRecord-1); end; end. |
AW: Schule Adressbuch
Zitat:
Tipp: Strg+C in dem Exceptionfenster machen und hier dann Strg+V. Ansonsten: Debuggen !!! Der Debugger zeigt doch bestimmt eine Fehlerstelle an? Davor einen Haltepunkt (F5) machen und das Programm neu starten (im Debugger). Danach kann man schön mit F7 durch den Code steppen und kann sich nebenbei die Variablen ansehn (z.B. die Maus drüberhalten), ob sie die erwarteten Werte enthalten und/oder sich oben mal das Menü "Start" genauer ansehn. |
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
Evnets von FromCreate und Fromdestroy waren nicht angehängt.
Button7 (Speichern) war im Code implementiert, der Button selbst fehlt. Keine Ahnung wie der Code zusammenkopiert wurde. Von weiteren privaten Benachrichtigungen diesbezüglich bitte ich abzusehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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