Autor Beitrag
110022
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 287

XP SP2
Delphi 7
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
listbox1.Items.LoadFromFile(listbox1.items.Strings[listbox1.ItemIndex]);					


kann mir da jemand helfen??

danke im Voraus
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 287

XP SP2
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
PChar(ListBox1.Items[ListBox1.ItemIndex])					
110022 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 287

XP SP2
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 287

XP SP2
Delphi 7
BeitragVerfasst: 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
ausblenden Delphi-Quelltext
1:
shellexecute(application.Handle, 'open', PChar(ListBox1.Items[ListBox1.ItemIndex]), nilnil, SW_SHOWNORMAL);					
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 287

XP SP2
Delphi 7
BeitragVerfasst: So 07.12.08 23:23 
Habs jetzt hinbekommen.
Das ist ja ein Brecher geworden^^

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


Danke für deine Hilfe