Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Shellexecute - fehler beim Auslesen der ini? (https://www.delphipraxis.net/28415-shellexecute-fehler-beim-auslesen-der-ini.html)

GimbaR 24. Aug 2004 14:06


Shellexecute - fehler beim Auslesen der ini?
 
Hi, hab mal wieder ne fräge, leider brachte weder die suche auf der DP noch die suche bei google was derartiges... :(
Ich hab in meinem Programm eine procedure -ein OnClick-ereigniss für ein PopupMenu (PopupMenu1)-, die den pfad der exe datei ausliest und sie dann startet. Der name des Wertes -in der Sektion "Games"- heißt genauso wie die Caption des angeklickten Items von PopupMenu1. Die variable "gamename" ist eine globale Variable (unter implementation). Das PopupMenu öffnet sich, wenn man auf das icon in der tna mit rechter masutaste raufklickt... Ich hoffe ich konnte mir deutlich ausdrücken, najo, seht selbst:
Delphi-Quellcode:
procedure TForm1.PopupItemClick(Sender: TObject);
var
  gamepath: String;
begin
  gamename:=(Sender as TMenuItem).Caption;
  ini:=TInifile.Create(ExePath+'\config.ini');
  try
    gamepath:=ini.ReadString('Games', gamename, '');
  finally
    ini.free;
  end;
  ShowMessage(gamename+' | '+gamepath);
  ShellExecute(Application.Handle, 'open' ,PChar(gamepath), nil, nil, sw_ShowNormal);
end;
Hab das Projekt mal nen beitrag weiter unten hochgeladen...

Alexander 24. Aug 2004 14:22

Re: Shellexecute - fehler beim Auslesen der ini?
 
Was liefert er denn als "GamePath" ?
Hast du es mal mit ExtractFilePath(Paramstr(0)) anstatt mit "ExePath" probiert?

Ich würde mir das Projekt ja runterladen, allerdigs habe ich hier auf'm Schlepptop kein WinRar installiert, könntest du es vielleicht noch mal zippen?

GimbaR 24. Aug 2004 14:33

Re: Shellexecute - fehler beim Auslesen der ini?
 
Liste der Anhänge anzeigen (Anzahl: 1)
gamepath is die variable, die das hier ausliest, so in das popupMenu1 werden auch nur diese einträge eingefügt, es soll dann zB COD aus der Sektion "games" gelesen wird, wenn man auf COD drückt:
[Games]
NFSU=D:\Need For Speed Underground\Speed.exe
UT2004=D:\UT2004\System\UT2004.exe
Warcraft3 - TFT=D:\Warcraft III\Frozen Throne.exe
COD=D:\Call of Duty\CODMP.exe

Bowler 24. Aug 2004 15:23

Re: Shellexecute - fehler beim Auslesen der ini?
 
Hm...wo genau liegt denn Dein Problem?

Liefert die das ReadString kein Ergebnis aus der INI-Datei? Oder schlägt das ShellExecute fehl?

Hast du das Programm schon debuggt, und geschaut, dass alle Variablen den richtigen Wert enthalten? Speziell das Konstrukt ExePath+'\config.ini'? Nicht dass die Ini-Datei nicht gefunden wird, oder sowas.

Und in Gamename steht ebenfalls der richtige Wert? ohne jegliche Steuerzeichen, etc?

Gruß
Christian

scp 24. Aug 2004 15:43

Re: Shellexecute - fehler beim Auslesen der ini?
 
Die Messagebox zeigt gamename z.B. so an:
NFSU
Das heisst, in den Namen hat sich ein & eingeschlichen, der im Popupmenü ein Tastaturkürzel erlauben soll. Das & musst du dann also wieder aus dem Namen rsausfiltern, z.b. mit
Delphi-Quellcode:
gamename := StringReplace(gamename, '&', '', [rfReplaceAll]);
Dann klappts auch mit dem INI-auslesen.

GimbaR 25. Aug 2004 11:46

Re: Shellexecute - fehler beim Auslesen der ini?
 
Zitat:

Zitat von scp
Die Messagebox zeigt gamename z.B. so an:
NFSU
Das heisst, in den Namen hat sich ein & eingeschlichen, der im Popupmenü ein Tastaturkürzel erlauben soll. Das & musst du dann also wieder aus dem Namen rsausfiltern, z.b. mit
Delphi-Quellcode:
gamename := StringReplace(gamename, '&', '', [rfReplaceAll]);
Dann klappts auch mit dem INI-auslesen.

Hat wunderbar geklappt, big THX!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz