Einzelnen Beitrag anzeigen

CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: Record, der überschrieben wird, bekommt wieder Initialwerte

  Alt 24. Jul 2015, 06:57
Mir ist schon manchmal das Problem auf die Füsse gefallen, dass ich nicht mit dem original Record gearbeitet habe, sondern mit einer Kopie. Das passiert z.B. dann wenn das Record nicht als var Parameter übergeben wird procedure SchreibWasInMeinRecord(ARec: TMeinTollesRecord); oder als Rückgabewert einer Funktionfunction GibMirDeinRecord: TMeinTollesRecord; . Anders als bei Objekten kriegst du da keine Referenz und musst das im Ganzen wieder dort zuweisen wo du die Werte haben willst.

Das kann bei der Verwendung globaler Variablen nicht passieren. Ansonsten sind die natürlich zu vermeiden wie du sicher weißt .

Sollte das nicht der Fall sein, schreib dir Setter für deine Record Felder und setze dort einen Breakpoint, dann solltest du sehen wer dir da deine Werte zurücksetzt.

Delphi-Quellcode:
type TRegeln = record
private
  fProbenArtNr: String;
  procedure SetProbenArtNr(AValue: String);
public
  property ProbenArtNr: String read fProbenArtNr write SetProbenArtNr;
end;

Procedure TRegeln.SetProbenArtNr(AValue: String);
begin
  fProbenArtNr := AValue; //<-- Breakpoint
end;
Sebastian
Das kann ja wohl nicht var sein!
  Mit Zitat antworten Zitat