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:
Hab das Projekt mal nen beitrag weiter unten hochgeladen...
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; |
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? |
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 |
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 |
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:
Dann klappts auch mit dem INI-auslesen.
gamename := StringReplace(gamename, '&', '', [rfReplaceAll]);
|
Re: Shellexecute - fehler beim Auslesen der ini?
Zitat:
|
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