Problem bei Zuweisung

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Problem bei Zuweisung

Beitrag von niederrheiner »

Hallo an Alle,

warum tritt bei der folgenden Zuweisung zur Laufzeit der Fehler Access violation auf?

Code: Alles auswählen

...
type
   comborec = record
                combo : TComboBox;
                name1 : String;
                name2 : String
   end;         
 
...
 
cbRezQuelle: TComboBox;  
 
...
 
var
  rcbRezQuelle     : comborec;     
 
...
 
  // Initialisierung verschiedener Variablen
showmessage('vor initialisierung');
  rcbRezQuelle.combo.Name := 'cbRezQuelle';   <====== bei dieser Zuweisung tritt der Fehler auf
showmessage('nach combo');
Wo habe ich einen Fehler gemacht?

Bis dann ...
MfG
Günter

noenglish
Beiträge: 36
Registriert: Di 4. Mai 2010, 09:14
OS, Lazarus, FPC: Win10 64Bit, L: 1.8.4 FPC 3.0.4

Re: Problem bei Zuweisung

Beitrag von noenglish »

Tippfehler? Sollte es nicht .name1 bzw. .name2 sein?
Grüße
noenglish

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2813
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Problem bei Zuweisung

Beitrag von m.fuchs »

*Glaskugel herauskram*

Wenn es eine Access Violation ist vermute ich mal ganz stark dass rcbRezQuelle.combo nirgends erzeugt wird. Dagegen hilft ein

Code: Alles auswählen

rcbRezQuelle.combo := TComboBox.Create(nil);
ABER: deine Zuweisung mit der Name-Property lässt meine Glaskugel vermuten, dass Du die cbRezQuelle an die rcbRezQuelle.combo zuweisen wolltest. Das ginge dann so:

Code: Alles auswählen

rcbRezQuelle.combo := cbRezQuelle;

Kleiner Tipp: schreib das nächste Mal noch dazu was dein Code eigentlich machen soll.


hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Problem bei Zuweisung

Beitrag von MAC »

rcbRezQuelle ist ein Record, dort kann kein Access Violation auftreten.
Aber

Code: Alles auswählen

rcbRezQuelle.combo
ist ein Objekt und muss vorher zugewiesen werden. (Denn standartmäßig zeigt es auf nil und du kannst nicht mal einfach so den Wert des Nichts verändern :D )
Das heißt du musst erst eine Combobox zu Laufzeit erstellen oder eine schon existierene Combobox zuweisen:

Code: Alles auswählen

rcbRezQuelle.combo := Combobox1; // wenn eine Combobox bereits existiert
rcbRezQuelle.combo.Name := 'cbRezQuelle';

Code: Alles auswählen

rcbRezQuelle.combo := TCombobox.Create(Form1); // dynamisch erzeugen
rcbRezQuelle.combo.parent := Form1;
rcbRezQuelle.combo.left := 23;
rcbRezQuelle.combo.Width := 200;
rcbRezQuelle.combo.height := 30;
rcbRezQuelle.combo.Name := 'cbRezQuelle';

Code: Alles auswählen

Signatur := nil;

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: Problem bei Zuweisung

Beitrag von niederrheiner »

Hallo an Alle,

dank Eurer Hilfe ist das Problem vom Tisch und ich habe wieder etwas gelernt.

Nochmals Dank an Alle Poster.

Bis dann ...
MfG
Günter

Antworten