Convert TString * -> Char *
-
Schönen Abend,
ich habe per findfirst findnext eine Suche für mp3 Dateien gestartet, nun will ich die Id3 v1 Tags aus den Dateien lesen und Sie in verschiedene Labels schreiben. Jetzt habe ich nur ein Problem, wenn ich einen OpenDialog benutze funzt alles wunderbar. Wenn ich jetzt aber an stelle des OpenDialogs eine ListBox nehme, den Pfad mit angebe und auslesen will, sagt mir BCB:
[C++ Error] Unit1.cpp(344): E2034 Cannot convert 'TStrings * const' to 'char *'
[C++ Error] Unit1.cpp(344): E2342 Type mismatch in parameter 'File' (wanted 'char *', got 'TStrings *')Was kann ich dagegen tun?
-
du musst den String aus deiner ListBox rausnehmen:
String Pfad=ListBox1->Items->Strings[0];
und dann in char umwandeln:
char *pfad_in_char=Pfad.c_str ();
-
Die einzelnen Strings stehen unter
ListBox1->Items->Strings[i]Phips
[Edit]
Mist, da war jemand schneller
[/Edit][ Dieser Beitrag wurde am 26.03.2003 um 22:04 Uhr von Phips editiert. ]
-
Danke, hat alles wunderbar geklappt, fast
Ich lese die Strings jetzt mit einer for-Schleife aus:
for(int x=0;x<ListBox1->Count;x++) { Pfad=ListBox1->Items->Strings[x]; }[
Jetzt erhalte ich in meinen Labels aber immer nur den Letzten Eintrag aus der ListBox, woran liegt das?
Ciao Kersten
-
Am fünften Zeichen der Siebten Zeile von links unten gezählt.
Nun mal spass bei seite: Welche Labels? Wo Labels? Wo wird den Labels was zugewiesen? Debugger shcon mal eingesetzt? Fragen über Fragen...
-junix
-
Also, ich lese eine Mp3 Datei aus und schreibe die Id3 v1 Taghs in verschiedene Labels (z.B. Interpret, titel, usw.). Das funktioniert auch alles soweit, aber wenn ich jetzt wie vorhin schon geschrieben das mit einer for-Schleife regele, gibt das Programm nur den Letzten Eintrag aus der ListBox aus.
-
hi,
also wenn Du mit der for-Schleife alles in die Labels schreibst, dann ist das klar.
Fürs Beispiel Interpret:
Die For-Schleife holt sich den ersten Interpreten aus der Listbox und schreibt ihn in das Label. Im zweiten Durchlauf holt sie den zweiten Interpreten aus der Listbox und überschreibt damit den ersten.... Alle Interpreten werden immer überschrieben, bis schließlich der letze aus der Listbox im Label steht.Und jetzt gute Nacht,
Phips
-
So hatte ich mir das nicht gedacht, eigentlich wollte ich es wenn ich auf einen Eintrag in der ListBox klicke, das dann die Labels gefüllt werden. Aslo habe ich vorher eine schleife gemacht, um allen Einträgen eine Nummer zu geben.
-
hmm mußt dir mal dynamic_cast anschauen shed
-
@kerstenk
Wenn Du EINEN Eintrag der Listbox auswerten willst, warum gehst Du dann mit 'ner schleife durch?
in ListBox1->ItemIndex steht welcher Eintrag markiert / ausgewaehlt wurde. Das kannste als Index statt der schleife nehmen.