Einzelnen Beitrag anzeigen

Lemmy
Online

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#1

Parameterübergabe an Prozedur

  Alt 4. Sep 2012, 18:58
Delphi-Version: 7
Hallo,

habe eine Prozedur mit folgendem symbolischen INhalt:

Delphi-Quellcode:

procedure DatenPruefen(const ID: Integer; VAR Bezeichnung: String; VAR Datum:TDateTime; VAR ID2: Integer; VAR ID3: Integer; Var Vektor: Array of Integer);
begin
...
end;

procedure DatenEintragen(ID: Integer; Bezeichnung: String; ID2: Integer, Datum: TDateTime);
begin
..
..
  DatenPruefen(ID, Bezeichnung, Datum, ID2, ID3, Vektor);
..
..
end;
Das Problem: WEnn ich am Prozeduraufruf DatenPruefen() den Inhalt und die Speicheradressen der Parameter anschaue, ist alles in Ordnung. WEnn ich mit F7 einen Schritt weiter gehe, sind die Parameter nach dem Daten Datum SChrott und die Speicheradressen sind anders (also innerhalb der Prozedur).

Was ich herausgefunden habe:
Die Speicheradresse von ID2 hat sich geändert. DIese zeigt beim EIntritt in die Prozedur auf die Speicheradresse des Datums +16 (vorher Speicheradresse Datum +76). Die Speicheradresse von ID3 zeigt nun auf die Adresse von ID2 und damit auch auf deren Inhalt, die restlichen Adressen zeigen auch auf andere Bereiche.

Was ich geprüft habe:
1. die Prozedur DatenPruefen ist nur intern in der Unit aufrufbar, es gibt im Projekt / Sourcenverzeichnis keine weitere solche Methode.
2. Es gibt keine doppelten (globalen) Variablen.
3. die Reihenfolge der Parameter sind korrekt
4. dcus sind gelöscht, d.h. neu kompiliert, keine doppelten Units im Bereich der Suche
5. die VAR und CONST in der Methodendeklaration entfernt
6. Position der Parameter verändert

An den letzten beiden Punkten sieht man, dass mir an der Stelle eine Idee fehlt, wie ich da weiter kommen kann. Hat jemand eine Idee was ich machen kann? Kann leider kein Demosource zur Verfügung stellen, das geht nur in dem Projekt so (Delphi 7) und lässt sich aber auf anderen EntwicklerPCs nachvollziehen.

Grüße

Geändert von Lemmy ( 4. Sep 2012 um 19:47 Uhr)
  Mit Zitat antworten Zitat