![]() |
Schule Adressbuch
Hallo ihr lieben. ich habe ein kleines Problem oder eher gesagt meine Freundin.
Sie soll fuer die Schule eine Art Adressbuch schreiben. Sie hat zwar Delphi 2010 auf ihren Rechner von der Schule, jeddoch 0 Ahnung davon. Nun hat Sie ein abgabetermin fuer Morgen 12 Uhr bekommen. Wir beide haben jetzt hier und da was gelesen, doch kommen wir zu keiner Lösung. Kann uns jemand helfen dieses Adressbuch zu erstellen? folgende Sachen sollten drin sein: vorname nachname wohnort alter geburtsdatum dann da drunter < daneben aendern buttuon dannn > dann da drunter neuer eintrag button. kann bitte wer helfen? |
AW: Schule Adressbuch
Erst mal herzlich Willkommen...:dp:
Zitat:
:hi: |
AW: Schule Adressbuch
der termin ist seid mo bekannt, sie hat auch angweangen aber bis auf:
Code:
steht da nix. waehre auch bereit was zu zahlen. wichtig ist nur, das sie nicht wieder eine 6 da tehen hat...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; NV:array[1..5,1..50] of string; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin NV[1,1]:='Julian'; NV[2,1]:='Manske'; NV[3,1]:='Stockelsdorf'; NV[4,1]:='17'; NV[5,1]:='14.01.1994'; Edit1.Text:= NV[1,1]; Edit2.Text:= NV[2,1]; Edit3.Text:= NV[3,1]; Edit4.Text:= NV[4,1]; Edit5.Text:= NV[5,1]; end; end. |
AW: Schule Adressbuch
Hallo,
vielleicht ist diese ![]() Ansonsten, wenn ihr im Forum nach Adressbuch sucht, solltet ihr einige Ansätze finden. Grüße Klaus |
AW: Schule Adressbuch
Eigentlich wurde ja schon alles gesagt, aber
Wenn ihr bei einzelnen Teilen Probleme habt, dann könnt ihr gerne im Forum suchen und notfalls eine entsprechende Frage stellen. Und wie schon erwähnt, gibt es hier im Forum genug zu diesem Thema zu finden ... man muß nur danach suchen. :zwinker: Ansonsten: Zitat:
Delphi-Quellcode:
Und jetzt kann man das Ganze in einem RECORD verpacken oder in einem Daten-Objekt (ich weiß jetzt nicht, was sie schon alles gelernt hat und was genutzt werden kann).
vorname: string;
nachname: string; wohnort: string; alter: Integer; geburtsdatum: TDateTime; Diese einzelnen Daten-Packete dann in eine passende Liste - die Daten-Objekte in eine TObjectList - die Records in ein Array oder ebenfalls in eine TList PS: Das Alter würde ich garnicht mit speichern und auch vorher nicht eingeben. Dieses kann man, nur zum Anzeigen, ja direkt aus dem Geburtsdarum errechnen. |
AW: Schule Adressbuch
anders geragt ist das was oben steht bis dahin richtig?
|
AW: Schule Adressbuch
Im Prinzip könnte man es so machen.
Außer daß ich die Arrays eben ändern würde.
Delphi-Quellcode:
// 5 Eigenschaften mit je 50 Personen ... kling nicht wirklich "logisch"
BenutzerListe: array[1..5,1..50] of string; // 50 Personen mit je 5 Eigenschaften BenutzerListe: array[1..50,1..5] of string; // 50 Personen mit mehreren namentlich genannten Eigenschaften BenutzerListe: array[1..50] of TBenuterRecord; // wie oben genannt BenutzerListe[Benutzerindex].Eigenschaftsname Dann ist NV kein wirklich guter Name ... der sagt ja nicht wirklich "sprechend" was er nun macht und wofür er da ist. Ich wüßte jetzt nichmal wofür NV überhaupt stehen soll. :gruebel: Globale Variablen, also das NV ... dafür sollte man euch ein paar hinter die Ohren geben. Sowas gehört hier in das Private der Form, denn in den Methoden der Form soll es ja verwendet werden. ratet mal, warum das dort so schön genannt wurde?
Delphi-Quellcode:
Aber OK, an diesem Verhalten sind ja meißt die Lehrer schuld, da es oftmals so gelehrt wird. :wall:
private
{ Private-Deklarationen } (also den Lehrern gehört auch auf die finger geklopft) |
AW: Schule Adressbuch
der lehrer ist nicht wirklich schuld das einzige was der sagt, ist das internet frei sei nun und im internet alles stehen wuerde.
aber ich merk selbst gerade selbst deine antwort ueberordert uns hier gerade. weiss auch nicht was bautechnik mit programmieren zu tun hat. komme leider nicht weiter... |
AW: Schule Adressbuch
Vor ein paar Tagen wurde hier als Beispiel-Projekt so ein AdressBuch (ContactManager) doch vorgestellt.
Die Quellen findest du ![]() Wenn der Lehrer die Quellen sieht, dann geht der wahrscheinlich gleich nach Hause :mrgreen: |
AW: Schule Adressbuch
<°)))))< ?
|
AW: Schule Adressbuch
Zitat:
Zitat:
Ich denke - und mit der Meinung stehe ich gewiss nicht alleine da - das diese Aufgabe nicht erst seit dem 5.12 anstand. Wahrscheinlich hatte sie zwei bis sechs Wochen dafür Zeit, oder? Wenn ihr erst fünf Minuten vor der Angst anfangt und nicht mehr hinkriegt als die sichtbaren Komponenten auf das Formular zu ziehen, dann ist das ein eindeutiges Zeichen, dass ihr eure Prioritäten und eurer Zeitmanagement besser in den Griff kriegen solltet. Wenn wirklich eine sechs daraus wird, dann ist es zumindest eine wertvolle Lektion. Das nächste Projekt - egal in welchen Fach oder späteren Beruf/Studium - wird vielleicht dann nicht so verschlampt. Tut mir leid, wenn das ein bisschen hart klingt, aber wir haben hier andauerend Anfragen von Schülern, denen alles andere wichtiger im Leben ist und einen Tag vorher (nach mehreren Wochen Zeit) einfällt, dass sie ja noch ein kleine Programm zu programmieren haben. |
AW: Schule Adressbuch
Also erstmal entschuldige. Die Angst macht ein oft verzweifelt. haben nun Zeit bis heute Abend und habe ein tutorial durchgearbeitet. das ergebnis hat noch ehler und damit wuerde ich mich gern an euch wenden, wenn das okay ist. hier erstmal der code, den ich wenn er läuft noch etwas umschreiben wollte.
Delphi-Quellcode:
1. Fehler: Erwartet;, aber. erhalten in Zeile 49 (49:18)
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); 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; 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; implementation {$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); begin const BufferSize = 32; procedure TForm1.Button5Click(Sender: TObject); 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); //entspr. p:=p+1 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. 2. Fehler: Bezeichner neu deklariert ´TForm1´ im Zeile 49 (49:12) 3. Fehler: Erwartet: IMPLEMENTATION, aber BEGIN erhalten in Zeile 51 (51:1) 4. Fehler: Erwartet: ., aber ; erhalten in Zeile 56 (56:4) 5. Fehler: Erwartet: das Ende der Datei, aber Bezeichner ´FormDestroy´ erhalten in Zeile 58 (58:18) ich wuerde mich freuen, wenn ihr mir bei den Fehler helfen könntet. Lieben Dank PS: Muss mich noch mal an alle entschuldigen, ihr habt mit euren Aussagen recht und das tut mir leid, das ich dies gestern in der verzweiflung nicht gesehen habe. |
AW: Schule Adressbuch
Seit wann kommt ausführbarer Code vor den Implementation-Abschnitt?
|
AW: Schule Adressbuch
Ich habe es jetzt nicht getestet oder sonstwas, aber sehr auffällig ist, dass du Code (z.B. Prozeduren) überhalb des "implementation"-Schlüsselwortes benutzt. Pack mal folgendes
Delphi-Quellcode:
unter
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;
Code:
implementation
Das könnte schon helfen. Weil hier scheinbar Eigeninitiative ergriffen wurde, ist das schon einmal ein Fortschritt :P ... "implementation" ist das, was ansagt, dass jetzt Code folgt. Und genau das sind die Teile, die du unter das "implementation" verschieben solltest. Edit: Der Luckie war zu schnell... trotzdem poste ich! |
AW: Schule Adressbuch
Habe das nun gemacht und nun habe ich sehr viele Fehlermeldungen.
ich habe das ganze mal als rar datei gepackt. Link: ![]() |
AW: Schule Adressbuch
Sorry, aber der Download erfordert Javascript und das werde ich auf der Seite nicht aktivieren. Warum hängst du es nicht hier an deinem Beitrag an?
|
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
hier die datei als anhang. danke
|
AW: Schule Adressbuch
Du benutzt Prozeduren (z.B. TForm1.FormCreate, TForm1.FormDestroy), die nicht in der Klassendefinition vorhanden sind. Erweitere deinen Kram im interface-Abschnitt.
Oben unter
Delphi-Quellcode:
musst du noch
{ ...}
procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject);
Delphi-Quellcode:
schreiben.
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject); Nach "procedure TForm1.Button7Click(Sender: TObject);" hast du am Ende zwei mal "end;" geschrieben - das gehört da aber nur einmal hin - jedes "begin" erfordert ein "end" - da ist eins zu viel. Dann gibt es noch diese lustige Stelle:
Delphi-Quellcode:
Das ist so nicht möglich. Mach mal das obere Zeug (alles über dem zweiten "procedure [...]" weg und tu das "const Buffersize = 32;" direkt unter das zweite Procedure, dass es so aussieht:
procedure TForm1.Button5Click(Sender: TObject);
begin const BufferSize = 32; procedure TForm1.Button5Click(Sender: TObject);
Delphi-Quellcode:
Weiter habe ich nicht probiert, bin ja nun selber schwer mit Delphi beschäftigt :-D
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; |
AW: Schule Adressbuch
Es kommt noch ein paar Mal sowas vor:
Delphi-Quellcode:
Sieht jemand den Fehler?
procedure TForm1.Button5Click(Sender: TObject);
begin const BufferSize = 32; procedure TForm1.Button5Click(Sender: TObject); ... begin ... end; end; Ihr habt doch D2010 ... drückt mal Strg+D im Codeeditor, bzw. im Kontextmenü "Quelltext formatieren". Ordentlich formatiert fallen die Fehler eventuell noch besser auf. Nja, Delphi gibt doch die Fehlerstellen ganz gut an? Da muß man sich halt mal die erste Fehlermeldung vornehmen (Doppelklick auf die Fehlermeldung) und um diese Stelle drumrumgucken, was da los ist und was nicht stimmen könnte. Quellcode kann man hier im Forum auch direkt anhängen. (die DPR, die PAS, die DFM und eventuell noch die EXE) Bin heute zu langsam. |
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
...ich war grad dabei. 8-)
Im Anhang mal eine korrigierte Unit. (incl. der oben beschriebenen Fehler). Ich habe einfach mal sortiert, begin/end eingefügt. Auch wenn es manchmal nicht notwendig wäre erhöht es durchaus die Übersichtlichkeit, da der Block (z.B. Schleife) besser zu sehen ist. Keine Prüfung der Logik ! Falls ich noch was übersehen habe... ist schon spät :wink: |
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. |
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
so hier mal version 2 immer noch gleiche ehler mit button 7 drin
code + anhang fehlercode e/a103 habe leider keine F tasten geht es auch anders? lappi tastatur ist kaputt und schreibe mit der logitech mini gerade
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; Button7: TButton; 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
Warum schickst weiterhin kaputten Code wenn in meinem Anhang alles längst repariert war und zusätzlich noch den pas Code im Post ?
|
AW: Schule Adressbuch
entschuldige hab den fehler trotzdem hervor gerufen wenn noch kein datensatz eingebunden ist aber es geht nun danke :)
|
AW: Schule Adressbuch
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Und wenn man sich das Menü genauer ansieht ... |
AW: Schule Adressbuch
himitsu entschuldige die kopschmerzen von mir weiss nun aber was du meinst. brummi dir auch noch mal danke uer deine hile die 2 links von dir, werde ich mir uebers we anschauen mit ihr zusammen. auch wenn ich das selbst nicht wirklich brauche hat es mich doch nun auch irgendwie gefesselt.
danke danke danke... |
AW: Schule Adressbuch
Du solltest Dir mal eine Tastatur mit zuverlässig funktionierendem "F" zulegen ..:wink:
|
AW: Schule Adressbuch
So als kleiner Tipp: Man kann in Youtube *1 und Co. auch nach "Delphi Tutorial" suchen und findet so manches nettes Teil.
![]() ![]() ![]() ![]() 1) Muß man nicht so viel lesen und sieht auch was von der IDE. :angle2: Für ein eigenes Delphi (auf Zeit) zum Testen > ![]() |
AW: Schule Adressbuch
Ähm, Leute, habt ihr noch alle Klötze am Beutel? :shock:
Erst wird groß der moralische Zeigefinger erhoben: "WAAAS, für Geld deine Hausaufgaben machen, neeeiiin, nie!", und dann helft ihr ihm mit einen OFFENTSICHTLICH schlecht kopierten und NICHT von ihm stammenden Quellcode? Von den Quellcode in Beitrag 12 wurde doch keine Zeile von ihm oder seiner Freundin selbst geschrieben. Ich hoffe der Verursacher / Klassenkamerad wurde dafür von dir oder deiner Freundin (Dienstleistung geht auch) entsprechend entlohnt! |
AW: Schule Adressbuch
Man könnte auch sagen, daß da einem armen Schwein geholfen wurde, dessen Delphi-Kenntnisse so minimal sind, daß er noch nicht einmal einfache Fehler erkennen und beheben konnte.
Aber, er hat sich hingesetzt und versucht sich durchzubeißen, und das ist mehr als man von dem einen oder anderen sagen kann. Gruß K-H |
AW: Schule Adressbuch
Zitat:
Kopierter Quelltext und für jeden Fehler hier nachgefragt. Am Ende haben wieder mehrere Leute die Sachen korrigiert und hier eingefügt. Ganz großes Kino! 8-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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