Entwickler-Ecke

Sonstiges (Delphi) - fehlende UNIT


jUli@ - Fr 23.08.02 11:24
Titel: fehlende UNIT
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 - 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@ - Fr 23.08.02 15:30
Titel: Quelltext der add

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@ - Fr 23.08.02 15:31
Titel: Quelltext der Unit

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 - 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 http://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


ao - 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 - 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.


ao - Fr 23.08.02 17:39

@Renegade

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

Andreas