TStrings::AddObject jemand nen eleganteren Vorschlag?
-
Moin,
ich habe folgenden Code gebaut:
void __fastcall TForm2::FormActivate(TObject *Sender) { ComboBox1->Items->Clear(); String SQLstr="SELECT PK, NAME_DEU FROM TABELLE ORDER BY UPPER(NAME_DEU)"; Form1->Query1->SQL->Text=SQLstr; Form1->Query1->Open(); while (!Form1->Query1->Eof) { AnsiString* CCode = new AnsiString; *CCode = Form1->Query1->FieldByName("PK")->AsString; ComboBox1->Items->AddObject( Form1->Query1->FieldByName("NAME_DEU")->AsString, (TObject *)CCode); Form1->Query1->Next(); } Form1->Query1->Close(); }
In CCode speicher ich den Primärschlüssel des Datendatzes ab, den ich später wieder brauche, angezeigt wird aber die deutsche Bezeichnug NAME_DEU.
Da die Tabelle sich schnell verändern kann, muß ich die Combobox onActivate füllen.
Nun meine zwei Fragen:
1. Hat jemand ne bessere Idee zu dem Thema?
2. Das mit dem ComboBox1->Items->Clear() ist doch nicht ganz sauber, oder?
Meiner Meinung nach bleiben die TObjects doch noch fröhlich im Speicher.
Ich sollte die noch löschen, oder? Aber wie und wo?Danke schonmal im Vorab
-
DMarko,
DMarko schrieb:
Meiner Meinung nach bleiben die TObjects doch noch fröhlich im Speicher.
Würde ich auch sagen.
DMarko schrieb:
Ich sollte die noch löschen, oder? Aber wie und wo?
Bevor Du die Box leerst oder noch besser während:
while (ComboBox1->Items->Count > 0) { delete (String*)(ComboBox1->Items->Objects[0]); ComboBox1->Items->Delete(0); }
(ungetestet)