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 Funktion
function 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;