WinFuture-Forum.de: Delphi Programm Pfad/e aus Textdatei o.ä. - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Delphi Programm Pfad/e aus Textdatei o.ä.


#1 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 24. Oktober 2011 - 17:14

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 ;)
0

Anzeige



#2 Mitglied ist offline   Gast 

  • Gruppe: aktive Mitglieder
  • Beiträge: 818
  • Beigetreten: 02. September 07
  • Reputation: 22

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.

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.
1

#3 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

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 :lol:
0

#4 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

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



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.

0

#5 Mitglied ist offline   Gast 

  • Gruppe: aktive Mitglieder
  • Beiträge: 818
  • Beigetreten: 02. September 07
  • Reputation: 22

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.

Angehängtes Bild: TOpenDialog2.jpg Angehängtes Bild: TOpenDialog1.jpg

.
.
.
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.
0

#6 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 26. Oktober 2011 - 09:48

oha. Das sollte ich mal versuchen :lol: 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 :)

Dieser Beitrag wurde von J000S bearbeitet: 26. Oktober 2011 - 18:49

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0