Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Eintrag aus ListBox ausführen


110022 - So 07.12.08 20:43
Titel: Eintrag aus ListBox ausführen
Hi

Ich bekomme es nicht auf die reihe, ich habe in einem Ordner eine/oder mehrere Anwendungen, diese wird in einer Listbox aufgeführt, und jetzt will ich das wenn man auf den Eintrag doppelklickt, diese Datei ausgeführt wird, nur wie geht das?

Ich versuche es krampfhaft hiermit, aber das klappt nicht

Delphi-Quelltext
1:
listbox1.Items.LoadFromFile(listbox1.items.Strings[listbox1.ItemIndex]);                    


kann mir da jemand helfen??

danke im Voraus


platzwart - So 07.12.08 20:49

Das LoadFromFile lädt lediglich Strings aus einer Datei als Einträge in deine ListBox. Such mal nach ShellExecute...

SaveToFile: Die aktuellen Einträge deiner Listbox werden in eine Datei gespeichert.
LoadFromFile: Die gespeicherten Einträge werden aus einer Datei wiederhergestellt.


110022 - So 07.12.08 20:51

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Das LoadFromFile lädt lediglich Strings aus einer Datei als Einträge in deine ListBox. Such mal nach ShellExecute...

SaveToFile: Die aktuellen Einträge deiner Listbox werden in eine Datei gespeichert.
LoadFromFile: Die gespeicherten Einträge werden aus einer Datei wiederhergestellt.

ShellExecute kenne ich, habe ich auch schon oft benutzt, daran habe ich auch scon gedacht,nur die Frage wie binde ich es ein??


jaenicke - So 07.12.08 20:59

So wie sonst auch. :nixweiss:
Als Anwendung gibst du den Eintrag in der ListBox an, dabei ist der Typ des Parameters PChar, also musst du einen entsprechenden Typecast durchführen:

Delphi-Quelltext
1:
PChar(ListBox1.Items[ListBox1.ItemIndex])                    


110022 - So 07.12.08 21:03

So hab ich das aber noch nie gemacht^^

Da fehlt ja noch was, der sagt:

[Fehler] Unit6.pas(56): Anweisung erforderlich, aber Ausdruck vom Typ 'PAnsiChar' gefunden :?:


jaenicke - So 07.12.08 21:04

Ja, ShellExecute musst du schon benutzen. Du hast doch geschrieben, dass du das schon verwendet hast, dann versuch das doch mal.


110022 - So 07.12.08 23:08

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ja, ShellExecute musst du schon benutzen. Du hast doch geschrieben, dass du das schon verwendet hast, dann versuch das doch mal.


Spontan würdde ich das so machen, aber das klappt so nicht

Delphi-Quelltext
1:
shellexecute(application.Handle, 'open', PChar(ListBox1.Items[ListBox1.ItemIndex]), nilnil, SW_SHOWNORMAL);                    


jaenicke - So 07.12.08 23:14

Zwei mögliche Fehlerquellen:
Entweder musst du den Ordner noch als Arbeitsverzeichnis angeben (da hast du im Moment nil stehen).
Oder der Ordner steht nicht mit in der Listbox, der darf natürlich nicht fehlen. Wenn es das Verzeichnis deines Programms ist genügt:

Delphi-Quelltext
1:
PChar(ExtractFilePath(ParamStr(0)) + ListBox1.Items[ListBox1.ItemIndex])                    
Wenn es ein anderes ist, dann musst du das ja irgendwo haben, du suchst dir ja offenbar die Exedateien. Dabei kannst du ja z.B. in einer TStringList zusätzlich den kompletten Pfad speichern.


110022 - So 07.12.08 23:23

Habs jetzt hinbekommen.
Das ist ja ein Brecher geworden^^


Delphi-Quelltext
1:
shellexecute(application.Handle, 'open', PChar(ExtractFilePath(ParamStr(0))+'plugins\'+(ListBox1.Items[ListBox1.ItemIndex])), nilnil, SW_SHOWNORMAL);                    


Danke für deine Hilfe