TP6 - Parameter absolute funktioniert bei Strings nicht?

04/08/2009 - 19:29 von Martin Freiberg | Report spam
Sehe ich es richtig, das wenn ich mit absolute einen String
überlagere der in einer Unit definiert ist, der Zugriff daneben
geht?

Beispiel zum Verdeutlichen:

unit Tool2;

interface

var
Bezeichnung : string[40];
Zahl : word;

implementation

begin
Bezeichnung := 'Test';
Zahl := 1000;
end.



program Lala;

uses Tool2;

var
Bezeichnung : string[40] absolute Tool2.Bezeichnung;
Zahl : word absolute Tool2.Zahl;

begin
writeln (Bezeichnung,Zahl:5);

end.

OK, hier in dem vereinfachten Beispiel wàhre die Anweisung
"absolute" nicht nötig.
Das ganze spielt sich in einem Programm mit mehreren Units ab.
Absolute soll deswegen verwendet werden, da die Units nicht
auf sich gegenseitig verweisen können, und auch keinen Ring
aufbauen dürfen, sondern nur Baumförmig.

Wàhrend die Zahl korrekt über absolute durchgereicht wurde,
hatte es bei Bezeichnung nur Zeichenmüll gegeben.

Bekannter Fehler in TP6?

Ob es bei dem Simpelbeispiel auch so schief làuft, habe ich
nun nicht getestet. Dient ja nur zur Verdeutlichung.


unit Tool1;
uses tool2;

unit Tool2;
uses Tool3;

unit Tool3;
uses Tool1;

Geht nicht! (OK, mit Trick 17 gehts, ist aber Bààh)


Gruß
Martin
 

Lesen sie die antworten

#1 Michael Fuchs
04/08/2009 - 21:31 | Warnen spam
Martin Freiberg schrieb:

Sehe ich es richtig, das wenn ich mit absolute einen String
überlagere der in einer Unit definiert ist, der Zugriff daneben
geht?

[...]

Das ganze spielt sich in einem Programm mit mehreren Units ab.
Absolute soll deswegen verwendet werden, da die Units nicht
auf sich gegenseitig verweisen können, und auch keinen Ring
aufbauen dürfen, sondern nur Baumförmig.



Öhm, man korrigiere mich, aber *absolute* ist BÖSE[tm]. Du möchtest also
ein paar globale Variablen haben, auf die du aus mehreren Units
zugreifen kannst?
Warum packst du die nicht einfach in eine Extra-Unit (nur für diese
Wariablen) und làsst die anderen Units darauf zugreifen? Am besten auch
nur über Prozeduren und Funktionen (hat dann schon fast
Objektorientierten-touch). Oder gleich Objektorientiert und ein
Singletonpattern. Allerdings dafür wohl lieber Freepascal nehmen.

Oder die Anwendung ganz anders designen, damit du gar keine globalen
Variablen oder Singletons brauchst. Erzàhl mal nàheres über die
Applikation, vielleicht kann man ja daran was drehen.

mfg
Michael


Meine Wanderungen durch Realitàt und Cyberspace

auf --> http://www.michael-fuchs.net <--

Ähnliche fragen