Autor |
Beitrag |
jUli@
      
Beiträge: 61
|
Verfasst: Fr 23.08.02 11:24
der findet nu meine Unit nicht (ist aber in USES eingetragen)
[Fehler] Add.pas(124): Undefinierter Bezeichner: 'persNrErmitteln'
diese liegt in meiner Unit (nicht Form oder so)
danke fürs Helfen!
PS: siehe auch unit! da ist der Quallcode! *g*
|
|
patmann2001
      
Beiträge: 201
Windows 7 Prof.
Delphi XE2
|
Verfasst: Fr 23.08.02 11:56
Hi
Wenn ich das so lese, denke ich, das du die Variable/Procedure/Function/wasauchimmer persNrErmitteln in der Unit Add.pas nicht richtig gemacht hast.
Vieleicht verstehe ich das auch nciht richtig. Vieleicht würde ein bisschen Quellcode das Missverständniss verkleiner/lösen.
cu Patmann
|
|
jUli@ 
      
Beiträge: 61
|
Verfasst: Fr 23.08.02 15:30
Titel: Quelltext der add
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192:
| unit Add;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Impressum, Liste, ADT_personenverwaltung, PersonalnummerErzeugen;
type TformAdd = class(TForm) lblUeberschrift: TLabel; lblPersonalnummer: TLabel; lblName: TLabel; lblVorname: TLabel; Label1: TLabel; edtPersonalNr: TEdit; edtName: TEdit; edtVorname: TEdit; edtGeburtsdatum: TEdit; btnAdd: TButton; btnBack: TButton; MainMenu1: TMainMenu; Datei1: TMenuItem; personeneinfgen1: TMenuItem; ListeallerPersonenanzeigen1: TMenuItem; Personendatenndern1: TMenuItem; Personendatenlschen1: TMenuItem; Beenden1: TMenuItem; Info1: TMenuItem; Hilfe1: TMenuItem; Impressum1: TMenuItem; btnExit: TButton; frmImpressum1: TfrmImpressum; frmListe1: TfrmListe; btnShow: TButton; procedure btnExitClick(Sender: TObject); procedure btnAddClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Hilfe1Click(Sender: TObject); procedure Impressum1Click(Sender: TObject); procedure btnBackClick(Sender: TObject); procedure ListeallerPersonenanzeigen1Click(Sender: TObject); procedure btnShowClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var formAdd: TformAdd;
implementation
uses Main;
{$R *.DFM}
Type tPerson = record vNr : Integer; vName :String [25]; vVorname :String [25]; vGebDate : TDate; end; // Ende des eigenen Datentypes!
Var person:tPerson; dateiOffen, dateigeschlossen:boolean; personendatei: array of Integer;
procedure TformAdd.btnExitClick(Sender: TObject); begin Application.terminate; end;
procedure eingabeLoeschen; Begin with formAdd do begin formAdd.edtPersonalNr.text:=''; formAdd.edtName.text:=''; formAdd.edtVorname.text:=''; formAdd.edtGeburtsdatum.text:=''; end; end;
procedure TformAdd.btnAddClick(Sender: TObject); begin Person.vNr := StrToInt(edtPersonalNr.text); Person.vName := edtName.text; // Eingabe der Informationen Person.vVorname := edtVorname.text; Person.vGebDate := StrToDate(edtGeburtsdatum.text);
SetLength(Personendatei,Length(personendatei)+1);// Länge wird ausgegeben und wir um einen vergrößert eingabeLoeschen; end;
procedure TformAdd.FormCreate(Sender: TObject); begin SetLength(personendatei,1);//Index = 0, dynamisches Arry beginnt mit 0 (bei Feld 1?) end;
function fehleingabePruefen:boolean; var fehleintrag:Integer;
begin fehleintrag:= 0; if formAdd.edtPersonalNr.text= ''then inc(fehleintrag); if formAdd.edtName.text= ''then inc(fehleintrag); if formAdd.edtVorname.text= ''then inc(fehleintrag); if formAdd.edtGeburtsdatum.text= ''then inc(fehleintrag);
case fehleintrag of 1..4 : begin ShowMessage('Bitte vervollständigen Sie Ihre Angaben!'); result:=false; end; 0 : begin with person do begin vNr:=persNrErmitteln; edtPersonalNr.text:=InToStr(persNr); name:= edtName.text; vorname:=edtVorname.text; gebDatum:=StrtoDate(edtGeburtsdatum.text); end;//whith
if begin dateiOffen:= datei
end;
end;
procedure TformAdd.Hilfe1Click(Sender: TObject); begin Application.MessageBox('Hier kommt die Hilf hin! ... Bei Gelegenheit!', 'Hey ... Achtung!!!!!',MB_ok); end;
procedure TformAdd.Impressum1Click(Sender: TObject); begin with frmImpressum1 do begin top:= 8; left:= 24; height:= 361; width:= 633; show; end; end;
procedure TformAdd.btnBackClick(Sender: TObject); begin formAdd.hide; formMain.show; end;
procedure TformAdd.ListeallerPersonenanzeigen1Click(Sender: TObject); begin with frmListe1 do begin top:= 8; left:= 24; height:= 361; width:= 633; show; end; end;
procedure TformAdd.btnShowClick(Sender: TObject); var gesuchtePersNr :word; i: Integer;
begin gesuchtePersNr:= StrToInt(edtPersonalNr.text); For i:= 0 to Length(Personendatei)-1 Do if Personendatei[i].vNr = gesuchtePersNr then begin edtpersonalNr.text:=IntToStr(Personendatei[i].vNr); edtName.text:=personendatei[i].vName; edtVorname.text:=personendatei[i].vVorname; edtGeburtsdatum.text:= DateToStr(Personendatei[i].vGebDate); end; end;
end. |
|
|
jUli@ 
      
Beiträge: 61
|
Verfasst: Fr 23.08.02 15:31
Titel: Quelltext der Unit
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| unit ADT_personenverwaltung;
interface type tPerson = Record persNr: Word; Name: String[25]; Vorname: String[25]; gebDatum:TDateTime; end; //tPerson
Var Personendatei: File of tPerson; implementation
function dateiOeffnen(dateiname:String):Boolean; begin try Assign(Personendatei, 'dateiname'); // suche datei reset(Personendatei); // zu lesen öffnen result:= true; except rewrite(Personendatei); // erzeugen der Datei wenn nicht vorhanden! result:=true; end; end; // dateiOeffnen
function dateiSchliessen:Boolean; begin try close(Personendatei); result:=true; except result:= false; end; end; // dateiSchließen
function dateigroesseErmitteln:Integer; begin result:=FileSize(Personendatei); end;//dateigroesseErmitteln
function aktuelleDatensatzpositionErmitteln:integer; begin result:= FilePos(Personendatei); end; // aktuelleDatensatzpositionErmitteln
procedure datensatzUeberschreiben(datensatz:tPerson; satzposition:Integer); begin seek(Personendatei, satzposition-1); write(Personendatei, datensatz); end; // datensatzUeberschreiben { function datensatzLoeschen(persnr:word;dateiname:string):boolean; var zwischendatei: File of tVokabel; Vokabel: tVokabel; dateiOffen, dateiGeschlossen: boolean;
begin assign(zwischendatei,'ZWISCHEN.DAT'); rewrite(zwischendatei); dateiOffen:= dateiOeffen(dateiname);
While NOT Eof(Vokabelendatei) DO begin read(Vokabelendatei, Vokabel); If Vokabel.persNr<>persNr then begin write (zwischendatei, Vokabel); end; end; // while dateiGeschlossen:=dateiSchließen; Close (zwischendatei); Erase(Vokabeldatei); Rename(zwischendatei, dateiname); Result:= true; end; // datensatzLoeschen }
end. |
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Fr 23.08.02 15:45
Moin erstmal!
Du hast folgendes gecoded: vNr:=persNrErmitteln;.
In dem ganzen code wird persNrErmitteln aber nicht deklariert. Daher kommt die Fehlermeldung. Du mußt persNrErmitteln eine Variable, einen Wert oder eine Funktion zuweisen.
Was mir noch beim überfliegen aufgefallen ist. Do codest
Quelltext 1:
| Application.terminate; |
das ist sehr unsauber. Benutze lieber Application.close; Siehe auch www.auq.de/ViewTopic.php?t=1562
Und eines von beiden ist überflüssig: dateiOffen, dateigeschlossen:boolean; Entweder ist sie offen oder zu sprich true oder false.
Gruß Renegade
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
ao
      
Beiträge: 145
Win XP Prof.
D7 Ent.
|
Verfasst: Fr 23.08.02 17:08
Hallo Renegade,
nur so der Form (<-- im wahrsten Sinne des Wortes) halber
Application.Close; gibt es nicht. Du meinst bestimmt die Close-Methode des Main-Forms.
Gruß
Andreas
|
|
Renegade
      
Beiträge: 358
Win XP Pro, Win 7 Beta
BDS 2006
|
Verfasst: Fr 23.08.02 17:12
Ooops  .
Das kommt davon wenn man das auf die schnelle macht ohne hinterher korrektur zu lesen.
Nätürlich muß es heißen Form1.close;
Sorry.
_________________ Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
ao
      
Beiträge: 145
Win XP Prof.
D7 Ent.
|
Verfasst: Fr 23.08.02 17:39
@Renegade
Kein Thema  , das ist mir vorhin auch passiert.
Andreas
|
|
|