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



BeitragVerfasst: Fr 23.08.02 08:07 
Guten morgen! ....
Ich habe ein kleines Problem:
ich möchte in einem form funktionen einer "einfachen" Unit benutzen! die unit ist auch in die Uses eingetragen. Trotzdem compeliert der bei der stelle nciht!
der text meiner Adddatei sieht so aus:
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:
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;

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.

ich wäre äußerst froh wenn mir jemand dabei helfen könnte!

LG Julia
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 23.08.02 09:38 
Hallo Julia,

schreib doch mal in welcher Zeile der Fehler auftritt und wie dieser Fehler heißt.

Noch ne Frage: Du möchtest eine Funktion die in einem tForm definiert ist in einer anderen Procedure (einer anderen Form) benutzen? Ist das richtig?

Gruß
TINO
jUli@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 09:54 
Titel: zur Antwort:
hi
also ich habe eine Unit in dieser unit ist meine function die, diese möchte ich in meinem Formular - Add - benutzen.

meine unit habe ich in die uses eingetragen (blau) (PersonalnummerErzeugen ist auch so eine unit wird auch nicht anerkannt).


ich habe den (1.) fehler rot markiert! :wink:
Code:

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;

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.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 23.08.02 10:32 
Und wie lautet nun der Fehler und postet am besten mal den Code-Teil wo Du Personendatei definierst (bitte nicht wieder die ganze Unit :-D)

Gruß
jUli@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 11:10 
[Fehler] Add.pas(95): Inkompatible Typen = der (1) Fehler...

unit ADT_personenverwaltung;


interface
type
tPerson = Record
persNr: Word;
Name: String[25];
Vorname: String[25];
gebDatum:TDateTime;
end; //tPerson

Var Personendatei: File of tPerson;

so???
jUli@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 11:12 
oh ok habe den 1. fehler beseitigt! *g*

Danke trotzdem..
jUli@ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Fr 23.08.02 11:15 
Titel: mist....... der nächste Fehler!
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!