ShellExecute mit FileListBox->FileName
-
Und gleich noch eine Frage hinterher:
Wie kann man per ShellExecute eine datei öffnen, deren Name mit FileListBox->FileName fastgelegt wird?
Mein code:ShellExecute(Handle,"open",FileListBox1->FileName,NULL,NULL,SW_SHOWNORMAL);
dann kommen aber die Meldungen:
[C++ Fehler] Unit1.cpp(38): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpFile' ('const char *' erwartet, 'AnsiString' erhalten)und:
[C++ Fehler] Unit1.cpp(38): E2034 Konvertierung von 'AnsiString' nach 'const char *' nicht möglichWie bekomm ich das hin?
MfG Chris_
-
Hallo
Der Compiler sagt es doch schon : du must den AnsiString in ein const char* umwandeln. Und für ShellExecute reicht die temporäre Variante :
..,FileListBox1->FileName.c_str(),
bis bald
akari
-
Habs auch so probiert, geht auch nicht, da macht er gar nichts:
FileOpen (FileListBox1->FileName, fmOpenReadWrite);
Wie geht das sonst noch?
EDIT: @ akari: Sorry, hab deine antwort noch nicht gelesen gehabt
Wie geht das mit dem konvertieren?
-
Hallo
Du müßtest nicht rumraten, wenn du die Grundlagen von C++ beherschen würdest, bevor du mit der WinAPI oder der VCL des Builders arbeitest...
Edit :
Wie geht das mit dem konvertieren?
Hab ich doch schon im ersten Post geschrieben.
bis bald
akari
-
hab versucht , FileName zu konvertieren, folgende fehlermeldung:
[C++ Fehler] Unit1.cpp(38): E2031 Typumwandlung von 'AnsiString' nach 'const char *' nicht zulässig
-
Hallo
Du solltest gründlicher lesen. Ich habe doch schon geschrieben das die korrekte Konvertierung von der Methode c_str() gemacht wird. Komplett sieht dein Aufruf also so aus :
ShellExecute(Handle,"open",FileListBox1->FileName[b].c_str()[/b],NULL,NULL,SW_SHOWNORMAL);
bis bald
akari
-
Hab ich auch schon versucht, dann kam beim ausführen der methode eine Error-Meldung. Nun kann ich das programm nicht mehr beenden, da kommt irgendsone zugriffsverletzungs-meldung
.
Soviel zu "gründlicher lesen"
-
Hallo
Ich kann hier nur den Code beurteilen, den du hier gepostest hast. Und den habe ich soweit korrigiert (Du siehst ja selber das der Code jetzt kompiliert). Der Fehler den du nun hast, ist die Folge von anderen, hier nicht geposteten Anweisungen. Ich empfehle die Benutzung des Debuggers.
bis bald
akari