| Autor |
Beitrag |
kongreddgrass
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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:
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); var MyIni: TIniFile; i: Integer; begin MyIni := TIniFile.Create('C:\Windows\Profiles\Slidermike\Desktop\Test.ini'); try for i := 1 to 5 do MyIni.WriteString('Section_1','Edit' + IntToStr(i),TEdit(FindComponent('Edit' + IntToStr(i))).Text); finally MyIni.Free; end; end;
procedure TForm1.Button2Click(Sender: TObject); 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 Tino: Code- durch Delphi-Tags ersetzt.
_________________ o.o
|
|
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
Delphi-Quelltext 1:
| button1.caption := MyIni.readvalue(......); |
Eine Datei Ausführen kannst du mit dem Befehl ShellExecute  schau doch mal in der Hilfe nach
Damit du weisst, welche Beschreibung, zu welchem Befehl gehören,
Löse dies doch so:
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 Klabautermann: Code-Tags hinzugefügt.
|
|
kongreddgrass 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: Do 18.09.03 20:29
Hi
ich hab jetzt ein Problem. Das Programm speichert die Datei nicht ab. Hier der Code
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 public 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 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
|
Verfasst: Do 18.09.03 20:45
Theoretisch sollte es so funktionieren.
Meine Vermutung für den Fehler ist, dass du darin etwas vergessen hast:
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
      
Beiträge: 230
|
Verfasst: 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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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:
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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: Sa 20.09.03 12:45
Nanu, habs ich zu schwer gemacht, oder???
Mike
_________________ o.o
|
|
DaBass
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 21.09.03 21:38
|
|
kongreddgrass 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Di 23.09.03 18:45
... ich bin etwas zu müde um mich da wieder eizuarbeiten, aber FileExists geht so:
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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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
Ok ich schau mal
_________________ o.o
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Di 23.09.03 19:30
Du musst vorher unter "Var" die Variable Pfad als String definieren:
Delphi-Quelltext
Ordner erstellst du so:
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
ORDNER ERSTELLEN wärst du fündig geworden..
_________________ Hasta La Victoria Siempre
|
|
kongreddgrass 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: Do 25.09.03 18:57
Hi,
ich benutze jetzt aus Gründen (bin ja noch nicht Profi) einen anderen Code.
Diesen:
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
|
Verfasst: Do 25.09.03 19:45
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 
      
Beiträge: 238
Win 98, Win 2000, Win Xp Prof.,Linux 8.2 Prof
Delphi 6
|
Verfasst: 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
|
Verfasst: Do 25.09.03 20:33
ou, entschuldige... die '' brauchts dann natürlich nicht...
Delphi-Quelltext 1:
| ini.WriteString('Programmname_01', 'Name', Edit.Text); |
so sollte es eigentlich funktionieren!
|
|