AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

INI lesen vor Application.Run

Ein Thema von White-Tiger · begonnen am 11. Feb 2008 · letzter Beitrag vom 11. Feb 2008
Antwort Antwort
White-Tiger

Registriert seit: 21. Dez 2007
3 Beiträge
 
Turbo Delphi für Win32
 
#1

INI lesen vor Application.Run

  Alt 11. Feb 2008, 20:19
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) = '-serverthen
    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.
René
MfG White-Tiger
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

Re: INI lesen vor Application.Run

  Alt 11. Feb 2008, 20:47
Sollte aber gehen. Hier ein Beispiel das funktioniert:

Delphi-Quellcode:
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.
Project1.ini

Code:
[Sektion]
Schluessel = Testwert
EDIT:

Ü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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#3

Re: INI lesen vor Application.Run

  Alt 11. Feb 2008, 20:48
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.

  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: INI lesen vor Application.Run

  Alt 11. Feb 2008, 20:55
Du musst die Variable Config schon definieren bevor du sie verwenden kannst. Unter var i:Integer; einfach noch Config: TIniFile; rein
  Mit Zitat antworten Zitat
White-Tiger

Registriert seit: 21. Dez 2007
3 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: INI lesen vor Application.Run

  Alt 11. Feb 2008, 21:03
@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^^
René
MfG White-Tiger
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz