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
platzwart hat folgendes geschrieben : |
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
jaenicke hat folgendes geschrieben : |
| 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]), nil, nil, 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])), nil, nil, SW_SHOWNORMAL); |
Danke für deine Hilfe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!