Array of AnsiString: Größe des Arrays ermitteln
-
Hi!
Ich habe ein Array vom Typ AnsiString:
Array = new AnsiString[13];und möchte dessen Größe (also die Anzahl der verfügbaren Strings) ermitteln.
Hintergrund: Ich möchte die Größe nicht überall mitführen müssen.
Ich habe das blödsinnigerweise erst mitint x = sizeof(Array) / sizeof(AnsiString);versucht. Funzt natürlich nicht. Hat jemand eine Idee wie man die Größe ermitteln kann?
Danke im voraus!
Sebo
-
Wenn die Arraygröße konstant ist z.B. so:
#define SIZE_OF_ARRAY 13 Array = new AnsiString[SIZE_OF_ARRAY];und dann immer SIZE_OF_ARRAY verwenden, oder, wenn die Array-Größe variabel ist, in einer Variablem "mitführen" die ja dann sowieso besteht.
-
SeboStone schrieb:
int x = sizeof(Array) / sizeof(AnsiString);Funzt natürlich nicht.
Komisch. Ich habe in einer meiner Klassen auch ein solches Array von AnsiString und es
funktioniert einwandfrei.
Wie hast Du denn Dein Array deklariert?Gruß,
Alexander
-
Deklarier das Array so:
AnsiString Array[13];
-
Mach's gleich ordentlich und benutze TStringList oder eine ähnliche Containerklasse.
-
Klar, so programmiere ich normalerweise (so sollte man auch). Nur ist die Größe des Array nicht so fest und ich will vermeiden, dass zur Entwurfszeit vergessen wird die Größe neu durchzuzählen. Ausserdem ist das Ding ziemlich groß (nicht nur 13) in diesem Fall also sehr mühsam.
@Alexander Kempf:
AnsiString *Array; Array = new AnsiString[13];@PAB:
Geht nicht, ich benötige das Array global. Ansonsten würde mir das auch nichts bringen, die Größe kann ich mit "sizeof()" trotzdem nicht ermitteln.@Jansen:
Das ist für meinen Zweck etwas übertrieben und umständlicher zu handhaben.Schade, es hat wohl keine eine wirkliche Idee. Dann muss ich wohl doch wieder zählen! *mpf*
Trotzdem Danke an alle!
Sebo
-
Naja ich meine das auf TStringList umzusetzen dürfte nicht sooo aufwendig sein.
Sonst nimm doch vector <String> als Container.
-
Ich kann's mir ja noch überlegen!
Aber heute bestimmt nicht mehr!
-
Kurzes Beispiel mit vector...
vector <String> Array; Array.push_back("abcdefg"); Array.push_back("defghij"); Edit1->Text = Array[Array.size()-1];
-
Wenn ich mir das so überlege ...
Ich hab' "vector" noch nie verwendet, aber sieht gar nicht schlecht aus, zumindest so als ob es sehr wenig Speicher braucht! Ich glaub', ich muss da nicht mehr viel überlegen!
Danke Dir!Sebo
-
SeboStone schrieb:
@Jansen:
Das ist für meinen Zweck etwas übertrieben und umständlicher zu handhaben.Wieso ist das übertrieben und umständlich? Du kannst in der Stringliste strings hinzufügen, löschen, raussuchen, anzeigen usw. Das ist das gleiche was dein AnsiString Array kann, nur das die Stringliste darauf ausgelegt ist, mehrere Strings zu verwalten