Autor Beitrag
jUli@
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 15:30 
Titel: Quelltext der add
ausblenden volle Höhe Quelltext
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@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 15:31 
Titel: Quelltext der Unit
ausblenden volle Höhe Quelltext
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Fr 23.08.02 17:08 
Hallo Renegade,

nur so der Form (<-- im wahrsten Sinne des Wortes) halber :wink:
Application.Close; gibt es nicht. Du meinst bestimmt die Close-Methode des Main-Forms. :wink:

Gruß
Andreas
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: Fr 23.08.02 17:12 
Ooops :oops: .

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Fr 23.08.02 17:39 
@Renegade

Kein Thema :wink:, das ist mir vorhin auch passiert.

Andreas