Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: ComboBox : String aus Items.Object auslesen

  Alt 17. Jan 2006, 19:07
Hallo TK,

wenn du in einer Schleife die lokale Variable str_Port befüllst, wird sich deren Adresse auf dem Heap nicht ändern - also wirst du immer die selbe Adresse als Object in deine ComboBox-Strings laden. Und da durch den typecast später keiner außer dir weiß, dass der Zeiger einen string repräsentieren soll, wird der reference count der string variable ordnungsgemäß dekrementiert und der Speicher beim Verlassen deiner procedure freigegeben. Später dann greifst du ins Nirvana und dann knallt es manchmal. Häng deine Port Adressen lieber so rein:

Delphi-Quellcode:
procedure fill_combo;
//...
                  Items.AddObject(str_Name, TObject(StrToInt(str_Port)));
//...

procedure TMain_Frm.Button1Click(Sender: TObject);
begin
  with Combo_Port do
  if ItemIndex > -1 then
    Showmessage(IntToStr(Integer(Items.Objects[ItemIndex])));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat