Autor |
Beitrag |
rob87
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: 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 Narses: 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
|
Verfasst: 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 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 11:45
DeddyH hat folgendes geschrieben : | 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
|
Verfasst: 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 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 11:51
DeddyH hat folgendes geschrieben : | 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
|
Verfasst: 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:
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 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 12:00
Ok. Mal sehen, ob ich des hinkrieg
Moderiert von Narses: Komplettzitat entfernt
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: 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:
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
|
Verfasst: Mo 01.12.08 12:18
*Ouch*, das Windows-Verzeichnis ist keine gute Idee, aber wenn schon, dann mit GetWindowsDirectory o.Ä. vorher ermitteln.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 12:24
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 12:33
DeddyH hat folgendes geschrieben : | 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
|
Verfasst: Mo 01.12.08 12:36
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 12:38
Womit wir wieder beim alten wären 
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 12:45
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
|
Verfasst: Mo 01.12.08 14:19
Wurde aber bereits gesagt: hier
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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  .
|
|