Autor Beitrag
kongreddgrass
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Mi 17.09.03 20:24 
Hallo,

ich will bei mir ein Progg machen, dass festgelegte Programme starten soll.
In der Standartansicht(beim start) stehen Buttons. In einem erweiterten Formular werden die Pfade festgelegt und in einer INI-Datei abgespeichert.
Dafür habe ich solchen Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
procedure TForm1.Button1Click(Sender: TObject); //speichern
var
  MyIni: TIniFile;
  i: Integer;
begin
  MyIni := TIniFile.Create('C:\Windows\Profiles\Slidermike\Desktop\Test.ini');
  try
    for i := 1 to 5 do //"Zahl" des letzten Edits
      MyIni.WriteString('Section_1','Edit' + IntToStr(i),TEdit(FindComponent('Edit' + IntToStr(i))).Text);
  finally
    MyIni.Free;
  end;
end; 

procedure TForm1.Button2Click(Sender: TObject); //laden
var
  MyIni: TIniFile;
  i: Integer;
begin
  MyIni := TIniFile.Create('C:\Windows\Profiles\Slidermike\Desktop\Test.ini');
  try
    i := 1;
    while MyIni.ValueExists('Section_1','Edit' + IntToStr(i)) do
    begin
      TEdit(FindComponent('Edit' + IntToStr(i))).Text := MyIni.ReadString('Section_1','Edit' + IntToStr(i),'kA');
      Inc(i);
    end;

  finally
    MyIni.Free;
  end;
end;


Nun habe ich das Problem. Ich will, das in der Standartansicht die Buttons 1...5 aus der Datei den jeweiligen Pfad laden.

Und ein Zweites: Ich will im erweiterten, also wie oben, auch die Namen der Programme abspeichern. Dies weiß ich auch. Nun will ich, dass die Buttons den jeweiligen Namen haben.

Hoffe, jemand hat was auf Lager.

Gruß
Mike

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.09.03 23:27 
ich habe leider keine zeit, um dir den code zu schreiben.

hier aber meine Idee:
Beim OnShow Erreignis der Form, generierst du die beschriftungen der Buttons
ausblenden Delphi-Quelltext
1:
button1.caption := MyIni.readvalue(......);					


Eine Datei Ausführen kannst du mit dem Befehl ShellExecute :arrow: schau doch mal in der Hilfe nach :!:


Damit du weisst, welche Beschreibung, zu welchem Befehl gehören,
Löse dies doch so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
[Beschreibung]
1=blubb
2=blabb
3=....

[Shell]
1=c:\command.com
2=sol.exe
3=....


so sollte die Ini Datei nachher mindestens aussehen.... :!:

Ich hoffe, diese Informationen helfen dir weiter!
ansonsten helfe ich dir gerne weiter

Moderiert von user profile iconKlabautermann: Code-Tags hinzugefügt.
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Do 18.09.03 20:29 
Hi

ich hab jetzt ein Problem. Das Programm speichert die Datei nicht ab. Hier der Code
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles;

type
  TForm5 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit17: TEdit;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm5.Button3Click(Sender: TObject);
begin
  Form5.Close;
  Form2.Show;
end;

procedure TForm5.Button1Click(Sender: TObject);
var
  MyIni: TIniFile;
  i: Integer;
begin
  MyIni := TIniFile.Create(Edit17.Text+'configuration.ini');
  try
    for i := 1 to 17 do //"Zahl" des letzten Edits
      MyIni.WriteString('Programm-Pfad','Pfad' + IntToStr(i),TEdit(FindComponent('Edit' + IntToStr(i))).Text);
    for i := 18 to 36 do
      MyIni.WriteString('Programmname','Name' + IntToStr(i),TEdit(FindComponent('Edit' + IntToStr(i))).Text);
  finally
    MyIni.Free;
  end;
end;

end.

Oder liegt es daran, dass er die Datei nicht überschreiben darf?

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.09.03 20:45 
Theoretisch sollte es so funktionieren.

Meine Vermutung für den Fehler ist, dass du darin etwas vergessen hast:
ausblenden Delphi-Quelltext
1:
MyIni := TIniFile.Create(Edit17.Text+'configuration.ini');					


hast du daran gedacht, dass im edit17 am ende noch ein backslash ( "\") eingesetzt werden sollte, ansonsten dann vor dem 'configuration.ini'

jetzt erstellst du am besten eine Abfrage, in der du das edit17.text überprüfst, ob am Ende des Strings auch ein Backslash ist, ansonsten fügst du einen ein... :!:

War das der Fehler? Oder war meine Vermutung falsch :?: :?:
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Fr 19.09.03 08:23 
Tipp: mit FileExists kannst du deine Pfade prüfen ob sie in der Form auch vorhanden sind.

_________________
mfg
Tana´Ri
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Fr 19.09.03 16:51 
@DaBass: Jetzt geht es. Danke für die Hilfe
@Tana'ri: Kannst du mir das bitte erklären? Ich weiß nicht, wie ich es genau wie ich es anstellen soll?

Jetzt hab ich ein weiteres Problem. Ich habe nocht ein Laden-Button plaziert, mit diesem Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm5.Button4Click(Sender: TObject);
var
  MyIni: TIniFile;
  i: Integer;
begin
  MyIni := TIniFile.Create(Edit17.Text+'\configuration.ini');
  try
    i := 1;
    while MyIni.ValueExists('Programmname','Name' + IntToStr(i)) do
    begin
      TEdit(FindComponent('Name' + IntToStr(i))).Text := MyIni.ReadString('Programmname','Name' + IntToStr(i),'kA');
      Inc(i);
    end;

  finally
    MyIni.Free;
  end;
end;

Wie bekomme ich es so, dass das Programm weiß, aus welcher Ort er die Datei laden soll. Vor allem soll es auch beim Programmstart ist, weil sonst wäre es ja umständlich, immer die Pfade hinzuschreiben?

Gruß
Mike

_________________
o.o
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Sa 20.09.03 12:45 
Nanu, habs ich zu schwer gemacht, oder???
Mike

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 21.09.03 21:38 
Nein, du hast es nicht zu schwer gemacht. Ich war nur nicht da übers Wochenende.
Am besten ist es, wenn du die Konfigurationsdatei im Verzeichnis der Exe-Datei hast. Der Pfad der Exe-Datei erhälst du so:
ausblenden Delphi-Quelltext
1:
 ProgDir  :=ExtractFilePath(ParamStr(0));					


danach kannst du die Konfigurationsdatei folgendermassen öffnen:
ausblenden Delphi-Quelltext
1:
MyIni := TIniFile.Create(ProgDir+'configuration.ini');					


ACHTUNG: denn backslash vor dem configuration.ini musst du entfernen.

Ich hoffe, das funktioniert so :!::?::?::!:
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Mo 22.09.03 21:52 
Hi,
kannst du mir des in den Code reinschreiben, damit ich's besser lernen kann (+ verstehen kann). BBBBBBBiiiiiiiiiitttttttttttttttttttteeeeeeeeeee...

Gruß
Mike

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.09.03 22:25 
sorry, habe keine Zeit diir die ganze Source zu erstellen.

Falls du konkrete Fragen hast, so melde dich wider.
Bin nicht der, der da alles macht....

Auserdem findest du vermutlich für alles das du brauchst ein Beispiel in diesem Form. Musst nur die Suche verwenden
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 23.09.03 18:45 
... ich bin etwas zu müde um mich da wieder eizuarbeiten, aber FileExists geht so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Pfad:='C:\';
If FileExists(Pfad+'Schießmichtot.doc')
Then ShowMessage('Schießmichtot.doc existiert..')
Else ShowMessage('Schießmichtot.doc existiert nicht..');


FileExists erwartet einen String als Parameter und gibt True (wenn die Datei existiert) oder False (wenn die Datei nicht existiert) zurück..

_________________
Hasta La Victoria Siempre
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Di 23.09.03 19:23 
@Terra23: Funktioniert dieser Code ab einer Prof-Version? Bei mir geht's nicht. Oder hab ich vergessen das var und dieses irgendwas hinzuschreiben?
@DaBass: Kannst du mir erklären, wo ich dieses ProgDir
und MyIni hinsetzen soll.

_________________
o.o
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Di 23.09.03 19:26 
Hi,
hab noch eine Idee gehabt, wo man die Datei hinspeichert.
Weil wenn die exe-Datei auf dem Desktop ist, wird man vielleicht nicht wollen, dass die ini-datei auf dem Desktop gespeichert wird.
Nun zu der Frage: Wie kann ich einen Ordner erstellen?
Ich such mal im Forum, summ summ summ , Ahhhhjaaa. Doch nichts, summ summ :D
Ok ich schau mal

_________________
o.o
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 23.09.03 19:30 
Du musst vorher unter "Var" die Variable Pfad als String definieren:

ausblenden Delphi-Quelltext
1:
2:
var
 Pfad: String;


Ordner erstellst du so:

ausblenden Delphi-Quelltext
1:
ForceDirectories('C:\Programme\Mein Programm\Unterordner');					


Das bewirkt, daß alle Ordner, die nicht vorhanden sind (in diesem Fall "Mein Programm\Unterordner\") erzeugt werden.

Wenn man nicht weiß, wonach man suchen soll, wird's schon schwer, aber ich denke auch mit

Suche in: Delphi-Forum, Delphi-Library ORDNER ERSTELLEN wärst du fündig geworden..

_________________
Hasta La Victoria Siempre
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Di 23.09.03 19:39 
Ich hab geschaut Ordner AND erstellen OR machen.
War wohl nix. Hey, wie geht des mit der Suchfunktion?
Danke für deine Hilfe

Gruß
Mike

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 23.09.03 22:01 
ProgDir und MyINI.Create

must du dort einfügen, wo du die Konfigurationen ausliest und in die TextFelder speicherst. Wo du das machst ist mir eigentlich egal...

würde es jedoch in das Create Ereigniss der Form setzen.
[/delphi]
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Do 25.09.03 18:57 
Hi,
ich benutze jetzt aus Gründen (bin ja noch nicht Profi) einen anderen Code.
Diesen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
begin
 ForceDirectories('C:\Programme\Progg-Starter\Configuration');
 ForceDirectories('C:\Programme\Progg-Starter\Names');
 ini := TIniFile.Create('C:\Programme\Progg-Starter\Configuration\Configuration_01.ini');
 try
 ini.WriteString('Programm_01', 'Path', 'This is not a path');
 finally
 ini.free;
 end;
 ini := TIniFile.Create('C:\Programme\Progg-Starter\Names\Name_01.ini');
 try
 ini.WriteString('Programmname_01', 'Name', 'Dieses hier solls sein';
 finally
 ini.free;
 end;
end;


Wie kann ich bei dem kennzeicheneten String 'Dieses hier solls sein' realisieren, dass es aus einem Textfel rausliest. Mit PChar habs ich geprobt. Nix.
Könnt ihr das mir lehren??

Gruß
Mike

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 25.09.03 19:45 
ausblenden Delphi-Quelltext
1:
ini.WriteString('Programmname_01', 'Name', 'TextFeld1.Text');					


Wobei du für TextFeld1 den Namen des Textfeldes eingeben musst, das du auslesen möchtest.....
kongreddgrass Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 238

Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
BeitragVerfasst: Do 25.09.03 19:58 
Des funzt net.
habe aber auch schon Edit1.Text porbiert. Geht nicht

Gruß
Mike

_________________
o.o
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 25.09.03 20:33 
ou, entschuldige... die '' brauchts dann natürlich nicht...

ausblenden Delphi-Quelltext
1:
ini.WriteString('Programmname_01', 'Name', Edit.Text);					


so sollte es eigentlich funktionieren!