AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Record über mehrere Prozeduren hinweg übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Record über mehrere Prozeduren hinweg übergeben

Ein Thema von günni0 · begonnen am 11. Apr 2018 · letzter Beitrag vom 12. Apr 2018
 
günni0
(Gast)

n/a Beiträge
 
#1

Record über mehrere Prozeduren hinweg übergeben

  Alt 11. Apr 2018, 18:39
Dadurch, dass ich Code aufgeräumt habe, ist ein neues Problem entstanden.
Ich demonstriere es am besten mit Dummy-Code

Unit 1
Delphi-Quellcode:
// procedure 1
var // <== NICHT global, sondern in Procedure 1 !
 DataRecord: TDataRecord;
begin
 DataRecord.A := -1;
 DataRecord.B := 2;
 // usw

 DataUnit.ProcA(DataRecord);
Unit 2
Delphi-Quellcode:
// procedure 2
procedure TDataUnit.ProcA(aDataRecord: TDataRecord);
begin
 if not IsDataOK(aDataRecord) then
  Exit;

 showmessage( aDataRecord.A ); // ist noch immer -1, sollte 0 sein.
 // ansonsten erzeuge hier Klasseninstanz von XYZ anhand der Daten von aDataRecord + schiebe diese Instanz in eine generische TList.
end;
Delphi-Quellcode:
// procedure 3
functionTDataUnit.IsDataOK(var aDataRecord: TDataRecord): Boolean;
begin
 Result := False;

 // überprüfe Daten (strings und integer) aus aDataRecord.
 // Wenn etwas kaputt ist, korrigiere es. Beispiel

 if aDataRecord.A < 0 then
  aDataRecord.A := 0;

 // Bei einer ganz bestimmten Sache wird ggf. Raise ausgelöst (von mir). Dann wird eh abgebrochen.

 Result := True;
end;
Ich dachte, dass ich wegen des Var-Parameters in IsDataOK() in Prozedur 3 nun die korrigierten Daten in Prozedur2 weitergeben kann.

Wo ist mein Fehler?
Ich könnte das Record auch in der Unit-2 selber deklarieren statt in Unit 1 in der Prozedur.
Aber ich weiß nicht ob das Nebenwirkungen hat. Dann wär ich aber die ganzen var-Parameter los.

Geändert von günni0 (11. Apr 2018 um 19:11 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz