Autor Beitrag
rob87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 11:39 
Hallo zusammen,

ich möchte beim Programmaufruf gewisse programm-spezifische Einstellungen vornehmen.
Also z.B: Ich starte das Programm mit dem Parameter "test" soll er halt gewisse Datenbank-Verbindungen, etc. kennen

Und diese Modi will ich aber während dem Programm bearbeiten können. Was meint ihr eignet sich dazu?? Also mir fällt eine: Eine INI-Datei oder (für meine Zwecke auch ausreichend) eine Textdatei oder was?

Also bsw. der Programmaufruf: C:\Programme\TEST1.EXE prgrvar.ini (die sucht er ja dann in C:\Windows\ oder?)
Und dann lädt er, Datenbank-Verknüpfung, E-Mail-Adressen, gemerkte CheckBox-Auswahl, etc...


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 01.12.2008 um 10:48


Zuletzt bearbeitet von rob87 am Mo 01.12.08 11:40, insgesamt 1-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 11:40 
TIniFile oder TRegistry wären IMHO die Mittel der Wahl (das hat mit Parametern im eigentlichen Sinne aber nichts zu tun).
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 11:45 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
TIniFile oder TRegistry wären IMHO die Mittel der Wahl (das hat mit Parametern im eigentlichen Sinne aber nichts zu tun).


Hmmm... Und des sind dann keine Parameter, sondern is nur ein Datei-Aufruf? Kann ich des dann wie ne Textdatei behandeln, oder läuft des anders?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 11:49 
Ein Parameter wird über ParamStr(Index) abgefragt, wobei in ParamStr(0) immer der komplette Dateiname samt Pfad zum eigenen Programm steht. Und eine Ini ist eine Textdatei in einem vorgegebenen Format, die sich mit der Klasse TIniFile (Unit IniFiles) bequem bearbeiten/auslesen lässt. Ähnliches gilt für TRegistry, wobei das allerdings keine Textdatei ist.
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 11:51 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Ein Parameter wird über ParamStr(Index) abgefragt, wobei in ParamStr(0) immer der komplette Dateiname samt Pfad zum eigenen Programm steht. Und eine Ini ist eine Textdatei in einem vorgegebenen Format, die sich mit der Klasse TIniFile (Unit IniFiles) bequem bearbeiten/auslesen lässt. Ähnliches gilt für TRegistry, wobei das allerdings keine Textdatei ist.

OK. Dann werd ich mal mit dem Ini-File arbeiten. Und der Programmaufruf is dann z.B:
...\Programm.exe inifilename.ini oder?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 11:56 
Das wäre dann wieder ein Parameter. Wenn Du eine Ini auslesen willst, musst Du ein Objekt vom Typ TIniFile anlegen und damit arbeiten. Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var Ini: TIniFile;
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'DieIni.ini');
  try
    Gruss := Ini.ReadString('Optionen','Gruss','Hallo');
    ShowMessage(Gruss);
  finally
    Ini.Free;
  end;
end;
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:00 
Ok. Mal sehen, ob ich des hinkrieg ;-)

Moderiert von user profile iconNarses: Komplettzitat entfernt
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:12 
Zitat:
ExtractFilePath(ParamStr(0)) + 'DieIni.ini')


Das liefert mir den Pfad, wo meine EXE-Datei liegt. Wenn ich nun den Windows-Pfad will, schreib ich einfach:
ausblenden Delphi-Quelltext
1:
 ini:=TIniFile.Create('C:\WINDOWS\ruf01.ini');					


Edit: Basst!! Und nun kann ich damit rumarbeiten, wie in ner TXT-Datei.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 12:18 
*Ouch*, das Windows-Verzeichnis ist keine gute Idee, aber wenn schon, dann mit GetWindowsDirectory o.Ä. vorher ermitteln.
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:24 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
*Ouch*, das Windows-Verzeichnis ist keine gute Idee, aber wenn schon, dann mit GetWindowsDirectory o.Ä. vorher ermitteln.


Du meinst, des is ned guad? Warum? Anderer Vorschlag? Ich bin ja offen ;-)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 12:28 
Wenn es sich um benutzerspezifische Daten handelt, gehören sie ins Profil des Benutzers (CSIDL_APPDATA), ansonsten ins Profil aller Benutzer (CSIDL_COMMON_APPDATA).
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:33 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es sich um benutzerspezifische Daten handelt, gehören sie ins Profil des Benutzers (CSIDL_APPDATA), ansonsten ins Profil aller Benutzer (CSIDL_COMMON_APPDATA).


Hmmm... Hast auch Recht. Also dann:
 ini:=TIniFile.Create(ExtractFilePath(CSIDL_COMMON_APPDATA+'ruf01.ini');?? Ne, des is auch Quatsch


Zuletzt bearbeitet von rob87 am Mo 01.12.08 12:38, insgesamt 2-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 12:36 
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:38 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
[url=www.delphiforum.de/v...=534503#534503[/url]
Womit wir wieder beim alten wären ;-)
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:38 
Hät da aber noch schnell ne Frage. Was findet ihr eleganter? Beim Programmstart alle Sachen die ma braucht (sind bei mir ca. 10) in variablen schreiben und dann die ini wieder freigeben. oder bei jedem auslesen darauf zugreifen?? des is ne geschmacksache.. wie schauts da mit der performance aus?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 12:42 
Das kommt IMO ganz darauf an, ob es sich um ein Einzelbenutzer-Programm handelt und falls nicht, ob die Variablen immer aktuell sein müssen. Im letzteren Fall würde ich immer wieder auslesen.
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Mo 01.12.08 12:45 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Das kommt IMO ganz darauf an, ob es sich um ein Einzelbenutzer-Programm handelt und falls nicht, ob die Variablen immer aktuell sein müssen. Im letzteren Fall würde ich immer wieder auslesen.


Hmmm... Stimmt auch wieder. Wenn ich was ändere, müsst ich sonst wieder die aktuellen Werte in die Variablen schreiben. Nene, des mach ma ned... Werd immer brav auslesen... ;-)

Merci. Thread is dicht! ;-)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.12.08 14:04 
Ich weise an dieser Stelle einmal auf meinen Beitrag zu Speicherpfaden hin, auch für spätere Leser dieses Threads:
www.delphi-library.d...ewtopic.php?p=499701
Die zweite Hälfte des Beitrags widmet sich unterhalb von "Dann gibt es da noch ein weiteres Problem:" dem Speichern im Anwendungsdatenverzeichnis. Auch eine Demo gibt es dort.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.12.08 14:19 
Wurde aber bereits gesagt: hier
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.12.08 14:35 
Richtig, aber nicht wie, und deshalb die Ergänzung, denn dein Link oben zeigt das nur an einem anderen Beispiel und warum wurde hier auch noch nicht erklärt. Es wurde nur gesagt, dass es da hin gehört ;-).