Zitat von
mandoki:
Hallo,
der Titel ist leider nicht sehr aussagekräftig aber ich weiß nicht so recht wie ich das sonst benennen sollte... sorry dafür.
Zu meinem Problem:
Beim testen der Absolute Database Komponente ist mir ein Sourcecode aufgefallen der mich
total verwirrt. Es geht hierbei um das Import/Export Tool welches auch im Source-Code beiliegt.
Hier mal einige kurze Ausschnitte (... steht für weiteren Code):
Delphi-Quellcode:
...
function HasVChk(Table: TTable; Field: TField;
var VChk: TVChk): boolean;
function ValToStr(VCHK: DBIVCHK; FldType: word):
string;
var
L: longint;
I: Integer;
D: Double;
MyDate:
BDE.DBIDATE;
...
...
und:
Der Compiler meldet keinen Fehler.
Ist dies einfach nur eine ungewöhnliche (aber erlaubte) Syntax?
(Habe das komplette File für interessierte mal drangehangen...)
Warum sollte er auch, das sind einfach lokale Prozeduren/Funktionen, d.h. ValToStr gilt wie die Variablen nur innerhalb HasVChk (und stört daher nicht, wenn andere Prozeduren ihr eigenes ValToStr haben).
Muster:
Delphi-Quellcode:
procedure Myprocedure;
var dummy : integer;
procedure MyLocalProcedure;
var ldummy : integer;
begin
end;
begin
MyLocalProcedure; { geht nur hier von begin bis end }
end;
Natürlich kann eine lokale Prozedur ihrerseits lokale Unterprozeduren haben. Das ist einer der grössten Vorteile von Pascal gegenüber anderen Sprachen und nimmt vieles der Vorteile von OO-Methoden vorweg. Ich benutze das seit 30 Jahren zur Strukturierung von Programmen, aber leider wird das heute aufgrund unverstandener OO-Ideologie abgelehnt oder ist auch überhaupt nicht mehr bekannt - hier im Forum kommen lokale Prozeduren praktisch nicht vor.
Gruss Reinhard