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