Autor Beitrag
daggit
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mi 18.10.06 23:36 
Hi,

habe da nochmal eine kleine knobelaufgabe :). Und zwar habe ich eine Andwendung welche meherer Formular enthält. In einigen Formularen wurden bestimmte recordtypen deklariert bsp:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
//Formular 1
type  TmyRec = record
      Bezeichnung :String;
      Zahlen      :Array of Integer;
      Text        :String;
end;


Nun möchte ich aber eine Variable vom typ Tmyrec auch in formular 2 verwenden. Wie mach ich das ab geschicktesten...man könnte natürlich die typdekleration kopieren, sollte sich aber an dieser später etwas ändern, dann muss das an allen stellen passieren, was sich natürlich als sehr umständlich erweist.

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 18.10.06 23:38 
Moin!

Gemeinsam verwendete Deklarationen packt man am besten in eine eigene Unit; die bindest du dann einfach in allen anderen ein, die darauf zugreifen sollen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
daggit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Do 19.10.06 21:09 
okai klingt logisch -_-. Die knobelei geht weiter :)

Wie stelle ich es an, wenn ich nun auch noch funktionen auslagern möchte?
Ich habe imprinzip eine Record-Typ-Dekleration. Nun möchte ich aber auch noch eine funktion bereitstellen mit der man z.B. den inhalt eines solchen objektes in eine Datei schreiben kann. z.B. im csv-Format "Feld,Feld,Feld;"

Muss ich mir bzw. sollte man nun ein komplett eigenes objekt deklarieren? Also anstatt mit record zu arbeiten eine komplette classe erstellen, oder kann man die funktion auch einfach so in der unit deklarieren?

Beispielunit
ausblenden Delphi-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:
//############
// Unit
//############

unit data;
interface
uses
  ....

type  TMYRecord = record
      Bezeichnung  :String;
      alter        :Integer;
end;

implementation


procedure save_Data();
begin
  showMessage('test');
end;

end.

//############


Zuletzt bearbeitet von daggit am Do 19.10.06 22:15, insgesamt 1-mal bearbeitet
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.10.06 21:14 
OH Uses <HTH>
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 19.10.06 21:21 
Du musst den Funktionskopf nochmal unter interface Schreiben, damit Delphi weiß, dass du willst, dass man auch von außerhalb zugreifen kann:
ausblenden Delphi-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:
//############
// Unit
//############

unit data;
interface
uses
....

type TMYRecord = record
Bezeichnung :String;
alter :Integer;
end;

procedure save_Data();

implementation


procedure save_Data();
begin
showMessage('test');
end;

end.

//############


PS: Bitte verwende doch Delphi-Tags!

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
daggit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Do 19.10.06 22:20 
@jakobwenzel, besten Dank. Der Funktionsaufruf funktioniert jetzt :)
ps; habe meinen Thread um die Delphi-Tags erweitert .. beim nächsten mal gibbts 5€ inne spaardose -_-



@Grenzgaenger
ja nun -_-.... anfängerfragen müssen auch mal sein :)