![]() |
INI lesen vor Application.Run
Also als 1. sry für die eventuell dämliche Frage...
Und zwar wie der Title schon vermuten lässt habe ich ein Problem damit meine Werte in der INI Datei zulesen bevor Application.Run ausgeführt wird.. Somit ich möchte die INI direkt in der Projekt Datei lesen Nur leider kommt mir schon alleine bei der Überprüfung ob die Section existiert das sie es nicht tut obwohl sie es tut. Selbst wenn ich dies rausnehme gehts nicht, im gegenteil dann bekomme ich sogar eine Fehler Meldung "Zugriff verletzung bei Adresse" Kann man keine INI's direkt in der Projekt datei lesen?
Delphi-Quellcode:
program SauerbratenLauncher;
uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}, Windows, SysUtils, Dialogs, IniFiles, ShellAPI; {$R *.res} var i: integer; begin Application.Initialize; Application.Title := 'Sauerbraten Launcher'; // Param Check i:= 1; while i < ParamCount do begin if ParamStr(i) = '-server' then begin ShowMessage('Parameter -server bestätigt'#13#10+ 'Übergebener Wert war '+ParamStr(i+1)+' !!!'); Config:= TIniFile.Create(ExtractFileDir(ParamStr(0))+'Sauerbraten Launcher\sv_profs.ini'); try { if Config.SectionExists(ParamStr(i+1)) then begin ExecuteFile(Config.ReadString(ParamStr(i+1) ,'Path','bin/sauerbraten.exe'), '-d -l"'+Config.ReadString(ParamStr(i+1) ,'Map','base/metl4')+ '" -n"'+Config.ReadString(ParamStr(i+1) ,'Name','New Serve')+ '" -c"'+Config.ReadString(ParamStr(i+1) ,'Player','6')+ '" -p"'+Config.ReadString(ParamStr(i+1) ,'PW','New PW')+ '" -o"'+Config.ReadString(ParamStr(i+1) ,'MasterMode','0')+'"', '', false); { end else ShowMessage('Error! Konnte das Profil "'+ParamStr(i+1)+'" nicht finden'); finally Config.Free; end; Exit; end; i:=i+1; end; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end. |
Re: INI lesen vor Application.Run
Sollte aber gehen. Hier ein Beispiel das funktioniert:
Delphi-Quellcode:
Project1.ini
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}, SysUtils, Dialogs, IniFiles; {$R *.RES} var Config: TIniFile; begin Application.Initialize; Application.CreateForm(TForm1, Form1); Config := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); try ShowMessage(Config.ReadString('Sektion', 'Schluessel', '++Fehler++')); finally Config.Free; end; Application.Run; end.
Code:
EDIT:
[Sektion]
Schluessel = Testwert Übrigens, ExtractFilePath extrahiert den Pfad und behält den Backslash "\". ExtractFileDir extrahiert den Pfad ohne den Backslash. Das ist immer so. Du hast also schon an der stelle einen Fehler, denn dein Pfad ist falsch. Es gibt also keine Ini. |
Re: INI lesen vor Application.Run
Hallo...
ich würd mal sagen, packe deinen Quellcode bezüglich der INI ins OnCreate eines Formulars. Dann wird es definitiv vor Application.Run ausgeführt. :hi: |
Re: INI lesen vor Application.Run
Du musst die Variable Config schon definieren bevor du sie verwenden kannst. Unter var i:Integer; einfach noch Config: TIniFile; rein ;-)
|
Re: INI lesen vor Application.Run
@Popov
Argh fuck.. sowas passiert nur mir.. ok hast recht das mit ExtractFileDir statt ExtractFilePath war der fehler^^ Aber du musst zugeben du hast es auch nicht sofort gesehn xD -------------------------------------------- @Andreas L. Ne Config ist vorhanden.. und zwar in Unit1 -------------------------------------------- Ich danke euch THX.. und sry für meinen dämlichen fehler.. P.S. ansonsten hatte ich in der Anwendung immer ExtractFilePath genommen.. kp wieso ExtractFileDir jetzt^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz