Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi aus ini lesen problem (https://www.delphipraxis.net/64102-aus-ini-lesen-problem.html)

mOzZzI 27. Feb 2006 17:09


aus ini lesen problem
 
Hai,

meine ToolBar ist jetzt zu 75% fertig, also freut euch drauf! ^^

Ein kleines Problem hab ich aber noch:

Delphi-Quellcode:
procedure TForm1.SpeedButton6Click(Sender: TObject);
var ini: TiniFile;
begin
   ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'Einstellungen\'+'config.dat');
   try
  ExecuteProgramm(ini.ReadString('BUTTONS', 'SpeedButton6', ''));
   finally
    ini.Free
   end;
end;
Bei dieser Stelle:
Delphi-Quellcode:
ExecuteProgramm(ini.ReadString('BUTTONS', 'SpeedButton6', ''));
öffnet er den Arbeitsplatz, abwohl in der ini überhaupt kein Wert drinsteht...
Kann mir da jemand weiterhelfen?

TeronG 27. Feb 2006 17:17

Re: Kurze Frage zu Code
 
Zitat:

Kurze Frage zu Code
hat das nicht jeder? :wink:

mOzZzI 27. Feb 2006 17:18

Re: Kurze Frage zu Code
 
Zitat:

Zitat von TeronG
Zitat:

Kurze Frage zu Code
hat das nicht jeder? :wink:

LÖL :wall:
:lol:

//Edit:
Titel geändert!!!

TeronG 27. Feb 2006 17:36

Re: aus ini lesen problem
 
Delphi-Quellcode:
ExecuteProgramm('Filename')
sagt mir grade nix aber prüf doch einfach, ob n gültiger wert vorhanden ist und öffne erst dann die Datei.

evtl. mit
Delphi-Quellcode:
FileExists('Filename')

turboPASCAL 27. Feb 2006 17:42

Re: aus ini lesen problem
 
Wen kein Parameter übergeben wird ist das mormal.
Prüfe vorher ob in der INI bzw. dem Eintrag etwas steht.

Delphi-Quellcode:
var ZuStartendesProgramm : string;

begin
  ZuStartendesProgramm := ini.ReadString('BUTTONS', 'SpeedButton6', '');
  if ZuStartendesProgramm <> '' then ExecuteProgramm( ZuStartendesProgramm )
    else ShowMessage('Kein Eintrag');

  // ...

TeronG 27. Feb 2006 17:47

Re: aus ini lesen problem
 
mür würde das so besser gefallen ... da wird dann gleich geprüft, ob es diese Datei auch giebt (falls man diese per Hand (falsch) eingetippt hat oder sie nachträglich gelöscht/verschoben hat/wurde.)
Delphi-Quellcode:
var ZuStartendesProgramm : string;

begin
  ZuStartendesProgramm := ini.ReadString('BUTTONS', 'SpeedButton6', '');
  if FileExists(ZuStartendesProgramm)
    then ExecuteProgramm( ZuStartendesProgramm )
    else ShowMessage('Kein Eintrag / Keine gültige Datei.');

  // ...

turboPASCAL 27. Feb 2006 17:57

Re: aus ini lesen problem
 
Das kannst du gern machen, ich bevorzuge es als erstes zu Prüfen ob ReadString überhaupt einen Eintrag enthält. Dann Schauen ob es das File gibt... ;)

Delphi-Quellcode:
var ZuStartendesProgramm : string;

begin
  ZuStartendesProgramm := ini.ReadString('BUTTONS', 'SpeedButton6', '');
  if ZuStartendesProgramm <> '' then
  begin
    if FileExists(ZuStartendesProgramm)
     then ExecuteProgramm( ZuStartendesProgramm )
      else ShowMessage( 'Datei nicht gefunden' );

  end else
  begin
    ShowMessage('Kein Eintrag in der Ini enthalten...');
  end;


  // ...
Wobei zu beachten ist das mit FileExists geprüft wird ob eine datei vorhanden ist. Wenn in dem Eintrag nur Notepad.exe ohne Pfad steht kommt eine Fehlermeldung obwol das Programm ausgeführt werden könnte.
Desswegen ist es besser den Rückgabewert vom ShellExecute nach dem ausführen abzufragen...

glkgereon 27. Feb 2006 18:51

Re: aus ini lesen problem
 
vielleicht sollte man auch direkt überprüfen ob das aufzurufende Programm den richtigen Dateitypen hat :zwinker:

Delphi-Quellcode:
var ZuStartendesProgramm : string;

begin
  ZuStartendesProgramm := ini.ReadString('BUTTONS', 'SpeedButton6', '');
  if ZuStartendesProgramm <> '' then
    if FileExists(ZuStartendesProgramm) then
      if ExtractFileExt(ZuStartendesProgramm) in ['.exe','.bat','.com','.scr'] then
        ExecuteProgramm(ZuStartendesProgramm)
      else ShowMessage('Falscher Dateityp')
    else ShowMessage('Datei nicht gefunden')
  else ShowMessage('Kein Eintrag in der Ini enthalten...');
geht das so mit dem set?

turboPASCAL 27. Feb 2006 18:55

Re: aus ini lesen problem
 
Und was ist mit *.scr ?! ;)

// 'nu hat er es noch schnell hinzugefügt ;)


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

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