Hallo alle zusammen,
ich habe mir mit Delphi 7 eine kleine Anwendung gemacht, um mit einem klick verschiedene Anwendungen zu starten. Das funktioniert alles perfekt und so... ABER: Ein paar Bekannte und Kollegen finden das ebenfalls sehr nützlich. Nur haben die unterschiedliche Pfade zu den Verschiedenen Anwendungen.
Also im Prinzip habe ich 2 Buttons. Der eine startet E:\ XX\ XX\ anwendung.exe + E:\ XX\ XY\ anwendung.exe. Der zweite Button startet nur E:\ XY\ XY\ anwendung.exe.
Also ich hab mir das so gedacht, dass ich in einer Menükategorie einfach "Einstellungen" anlege, wo dann definiert wird, wo welche Anwendung liegt. Gespeichert kann das ganze dann in einer .txt oder .ini - Datei.
Problem: Hatte seit knapp 3 Jahren mit Delphi nix mehr am Hut und Dr. Google hat mir da nicht sehr geholfen
Hoffe mir kann jemand helfen
Seite 1 von 1
Delphi Programm Pfad/e aus Textdatei o.ä.
Anzeige
#2
geschrieben 24. Oktober 2011 - 20:50
Hallo
Am einfachsten wird es sein, mit einem OpenDialog die betreffende Anwendung auszuwählen und den Pfad in eine ini-Datei zu speichern.
Ich habe dir mal ein Beispiel zum Testen mit einem Button geschrieben.
Das Ganze lässt sich natürlich auch über einen Menüeintrag realisieren.
Nicht vergessen IniFiles unter uses einbinden!
Und so lässt sich dann die Anwendung aus dem ini-pfad starten: (über einen Button)
Für ShellExecute benötigst du die ShellApi unter uses.
Das Ganze ist jetzt nur ein einfaches Beispiel wie man den Pfad in eine ini-Datei speichert und wieder ausliest. Es müsste natürlich noch auf einiges geachtet werden. (existiert die Datei, stimmt der Pfad, Fehlerbehandlungen, ...)
Falls du noch Fragen hast, melde dich. (meine Delphizeit ist aber auch schon etwas länger her)
Am einfachsten wird es sein, mit einem OpenDialog die betreffende Anwendung auszuwählen und den Pfad in eine ini-Datei zu speichern.
Ich habe dir mal ein Beispiel zum Testen mit einem Button geschrieben.
Das Ganze lässt sich natürlich auch über einen Menüeintrag realisieren.
procedure TForm1.Button1Click(Sender: TObject); //Anwendung auswählen var ini: TIniFile; inipath: String; //variable für ini-pfad begin inipath:= ExtractFilePath(ParamStr(0))+'pfade.ini'; //Pfad für ini-Datei ini:= TIniFile.Create(inipath); //ini-Datei im Programmverzeichnis erstellen if OpenDialog1.Execute then begin //OpenDialog öffnen ini.WriteString('DateiPfad', 'datei_01',OpenDialog1.FileName); //pfad in ini-Datei schreiben end else begin // OpenDialog abbrechen end; ini.Free; //ini-Datei freigeben end;
Nicht vergessen IniFiles unter uses einbinden!
Und so lässt sich dann die Anwendung aus dem ini-pfad starten: (über einen Button)
procedure TForm1.Button2Click(Sender: TObject); //Anwendung starten var ini: TIniFile; inipath, filepath: String; //variable für ini-pfad und exe-pfad begin inipath:= ExtractFilePath(ParamStr(0))+'pfade.ini'; ini:= TInifile.Create(inipath); try filepath:= ini.ReadString('DateiPfad','datei_01',''); //exe-pfad aus ini-Datei auslesen ShellExecute(Application.Handle, 'open', PChar(filepath), '', Pchar(ExtractFileDir(filepath)), SW_SHOW); //exe-Datei starten finally ini.Free; //ini-Datei freigeben end; end;
Für ShellExecute benötigst du die ShellApi unter uses.
Das Ganze ist jetzt nur ein einfaches Beispiel wie man den Pfad in eine ini-Datei speichert und wieder ausliest. Es müsste natürlich noch auf einiges geachtet werden. (existiert die Datei, stimmt der Pfad, Fehlerbehandlungen, ...)
Falls du noch Fragen hast, melde dich. (meine Delphizeit ist aber auch schon etwas länger her)
Alle sagten es geht nicht, da kam einer der das nicht wusste und tat es einfach.
#3
geschrieben 24. Oktober 2011 - 21:19
Super Das ist schon mal ein echter Anfang für mich. Ich hoffe, dass ich damit fürs erste klar komme
#4
geschrieben 25. Oktober 2011 - 17:05
Hmmm.... hab das so übernommen. Aber bei mir will das nicht so ganz.
Zitat
[Fehler] Unit1.pas(36): Undefinierter Bezeichner: 'OpenDialog1'
[Fehler] Unit1.pas(36): 'THEN' erwartet, aber Bezeichner 'Execute' gefunden
[Fehler] Unit1.pas(37): ')' erwartet, aber Bezeichner 'FileName' gefunden
[Fehler] Unit1.pas(39): ';' erwartet, aber 'ELSE' gefunden
[Fehler] Unit1.pas(41): '.' erwartet, aber ';' gefunden
[Warnung] Unit1.pas(43): Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Fehler] Unit1.pas(14): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button2Click'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
[Fehler] Unit1.pas(36): 'THEN' erwartet, aber Bezeichner 'Execute' gefunden
[Fehler] Unit1.pas(37): ')' erwartet, aber Bezeichner 'FileName' gefunden
[Fehler] Unit1.pas(39): ';' erwartet, aber 'ELSE' gefunden
[Fehler] Unit1.pas(41): '.' erwartet, aber ';' gefunden
[Warnung] Unit1.pas(43): Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert
[Fehler] Unit1.pas(14): Ungenügende Forward- oder External-Deklaration: 'TForm1.Button2Click'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls, ShellApi; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ini: TIniFile; inipath: String; //variable für ini-pfad begin inipath:= ExtractFilePath(ParamStr(0))+'pfade.ini'; //Pfad für ini-Datei ini:= TIniFile.Create(inipath); //ini-Datei im Programmverzeichnis erstellen if OpenDialog1.Execute then begin //OpenDialog öffnen ini.WriteString('DateiPfad', 'datei_01',OpenDialog1.FileName); //pfad in ini-Datei schreiben end else begin // OpenDialog abbrechen end; ini.Free; //ini-Datei freigeben end; procedure TForm1.Button2Click(Sender: TObject); var ini: TIniFile; inipath, filepath: String; //variable für ini-pfad und exe-pfad begin inipath:= ExtractFilePath(ParamStr(0))+'pfade.ini'; ini:= TInifile.Create(inipath); try filepath:= ini.ReadString('DateiPfad','datei_01',''); //exe-pfad aus ini-Datei auslesen ShellExecute(Application.Handle, 'open', PChar(filepath), '', Pchar(ExtractFileDir(filepath)), SW_SHOW); //exe-Datei starten finally ini.Free; //ini-Datei freigeben end; end; end.
#5
geschrieben 25. Oktober 2011 - 21:13
Du musst einen TOpenDialog auf die Form platzieren. Du findest ihn in der Tool Palette unter Dialogs.
Die Screenshots stammen von Delphi2010:
In Delphi7 ist die Palette waagerecht angeordnet.
Die Screenshots stammen von Delphi2010:
In Delphi7 ist die Palette waagerecht angeordnet.
. . . type TForm1 = class(TForm) Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; . . .
Dieser Beitrag wurde von Gast bearbeitet: 25. Oktober 2011 - 21:16
Alle sagten es geht nicht, da kam einer der das nicht wusste und tat es einfach.
#6
geschrieben 26. Oktober 2011 - 09:48
oha. Das sollte ich mal versuchen Werd ich heute nachnittag mal machen. Dankee
OK das läuft schonmal....aber wie kann ich jetzt mit dem einen Button 2 Anwendungen starten?
Jo läuft jetzt alles. KA obs der ideale Weg ist, aber es funzt
OK das läuft schonmal....
Dieser Beitrag wurde von J000S bearbeitet: 26. Oktober 2011 - 18:49
- ← Dynamics AX - Hat wer Ahnung davon/arbeitet damit?
- Programmierung
- Temperaturen über Netzwerk auslesen →
Thema verteilen:
Seite 1 von 1