| Autor |
Beitrag |
110022
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 07.12.08 20:43
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
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.12.08 20:59
So wie sonst auch.
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 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 07.12.08 23:08
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: 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
|
|