Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi brauche ini hilfe (https://www.delphipraxis.net/123037-brauche-ini-hilfe.html)

da-zocka 26. Okt 2008 13:20


brauche ini hilfe
 
hab dazu nichts gefunden

problem:
Delphi-Quellcode:
var
ini: TIniFile;
User: string;

begin
ini:=TIniFile.Create ('/'+User+'.ini');
  try
label1.caption:=ini.ReadString(User,'Punkte', '00000');
label2.caption:=ini.ReadString(User,'Geld','00000');
label3.caption:=ini.ReadString(User,'Geschwindigkeit','00000');
label4.caption:=ini.ReadString(User,'Angriff','00000');
label5.caption:=ini.ReadString(User,'Verteidigung','00000');
label6.caption:=ini.ReadString(User,'Geschicklichkeit','00000');
label7.caption:=ini.ReadString(User,'Ruf','00000');
  finally
    ini.free;
  end;
end;
ini:
Delphi-Quellcode:
[User]
Punkte=00001
Geld=00000
Geschwindigkeit=00000
Angriff=00000
Verteidigung=00000
Geschicklichkeit=00000
Ruf=00000
es wird anstatt 00001 im Label 00000 angezeigt.


Bitte um schnelle Hilfe

ringli 26. Okt 2008 13:33

Re: brauche ini hilfe
 
Delphi-Quellcode:
ini:=TIniFile.Create ('/'+User+'.ini');
Wo soll deiner Meinung nach diese Datei landen? Im Programmverzeichnis? Im Anwenungsdatenordner?

Wenn die INI-Datei im Programmverzeichnis liegen soll, dann wäre hier wohl eher
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + User + '.ini');
angebracht.

DeddyH 26. Okt 2008 13:39

Re: brauche ini hilfe
 
Abgesehen davon: was steht denn in der Stringvariablen "User"?

da-zocka 26. Okt 2008 15:15

Re: brauche ini hilfe
 
Zitat:

Zitat von ringli
Delphi-Quellcode:
ini:=TIniFile.Create ('/'+User+'.ini');
Wo soll deiner Meinung nach diese Datei landen? Im Programmverzeichnis? Im Anwenungsdatenordner?

Wenn die INI-Datei im Programmverzeichnis liegen soll, dann wäre hier wohl eher
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0)) + User + '.ini');
angebracht.

Da liegt ja nicht mein problem, mein Problem liegt daran, dass im Label anstatt 00001 0000 angezeigt wird.
Delphi-Quellcode:
var
ini: TIniFile;
User: string;

begin
ini:=TIniFile.Create ('/'+User+'.ini');
  try
label1.caption:=ini.ReadString(User,'Punkte', [b]'00000'[/b]);
label2.caption:=ini.ReadString(User,'Geld',[b]'00000'[/b]);
label3.caption:=ini.ReadString(User,'Geschwindigkeit',[b]'00000'[/b]);
label4.caption:=ini.ReadString(User,'Angriff',[b]'00000'[/b]);
label5.caption:=ini.ReadString(User,'Verteidigung',[b]'00000'[/b]);
label6.caption:=ini.ReadString(User,'Geschicklichkeit',[b]'00000'[/b]);
label7.caption:=ini.ReadString(User,'Ruf',[b]'00000'[/b]);
  finally
    ini.free;
  end;
end;
:wall:

DeddyH 26. Okt 2008 15:20

Re: brauche ini hilfe
 
Nochmal: was steht denn in "User"?

mkinzler 26. Okt 2008 15:20

Re: brauche ini hilfe
 
Wie sieht die Ini aus?

ringli 26. Okt 2008 15:21

Re: brauche ini hilfe
 
Zitat:

Da liegt ja nicht mein problem, mein Problem liegt daran, dass im Label anstatt 00001 0000 angezeigt wird.
Neben dem von DeddyH erwähntem Punkt liegt da dein Problem. Da die INI-Datei bzw. die entsprechende Sektion nicht gefunden wird, werden die von dir angegebenen Defaultwerte verwendet.

DeddyH 26. Okt 2008 15:22

Re: brauche ini hilfe
 
Zitat:

Zitat von mkinzler
Wie sieht die Ini aus?

Steht im Ausgangspost ;)

da-zocka 26. Okt 2008 15:26

Re: brauche ini hilfe
 
Ja, aber ich kann die ini ja auf dem Pfad erstellen.

Die Muhkuh 26. Okt 2008 15:28

Re: brauche ini hilfe
 
Trotzdem wollen wir wissen, was in User steht ;)

da-zocka 26. Okt 2008 15:32

Re: brauche ini hilfe
 
User ist eine Variable, die den Spielernamen angibt, die man am einfang eingibt.

ringli 26. Okt 2008 15:33

Re: brauche ini hilfe
 
Lass dir doch mal ausgeben welchen Pfad die INI-Datei tatsächlich hat.
Delphi-Quellcode:
var
ini: TIniFile;
User: string;

begin
ini:=TIniFile.Create ('/'+User+'.ini');
showmessage(ini.FileName); // <-- Diese Zeile an dieser Stelle einfügen
  try
label1.caption:=ini.ReadString(User,'Punkte', [b]'00000'[/b]);
label2.caption:=ini.ReadString(User,'Geld',[b]'00000'[/b]);
label3.caption:=ini.ReadString(User,'Geschwindigkeit',[b]'00000'[/b]);
label4.caption:=ini.ReadString(User,'Angriff',[b]'00000'[/b]);
label5.caption:=ini.ReadString(User,'Verteidigung',[b]'00000'[/b]);
label6.caption:=ini.ReadString(User,'Geschicklichkeit',[b]'00000'[/b]);
label7.caption:=ini.ReadString(User,'Ruf',[b]'00000'[/b]);
  finally
    ini.free;
  end;
end;

Die Muhkuh 26. Okt 2008 15:35

Re: brauche ini hilfe
 
Steht in der Ini wortwörtlich [User] drin oder ist das nur ein Platzhalter für uns?

DeddyH 26. Okt 2008 15:36

Re: brauche ini hilfe
 
Und vielleicht noch ein
Delphi-Quellcode:
ShowMessage(User);
dazu. :stupid:

Blink 26. Okt 2008 15:36

Re: brauche ini hilfe
 
Vielleicht solltes du bevor du auf die INI Datei zugreifst über prüfen ob sie überhaupt in dem angegeben Verzeichnis existiert mit FileExists.

Die Muhkuh 26. Okt 2008 15:37

Re: brauche ini hilfe
 
Das Erstellen der Ini sollte nicht das Problem sein, sonst würde es ja erst gar nicht die Defaultwerte laden, wenn es beim Erstellen schon kracht.

ringli 26. Okt 2008 15:42

Re: brauche ini hilfe
 
Zitat:

Zitat von Die Muhkuh
Das Erstellen der Ini sollte nicht das Problem sein, sonst würde es ja erst gar nicht die Defaultwerte laden, wenn es beim Erstellen schon kracht.

Solange das Erstellen des INI-Objektes nicht fehlschlägt, werden die Defaultwerte auch geladen selbst wenn die Datei gar nicht existiert. Jedenfalls so viel ich weiß. Lasse mich diesbezüglich aber gerne eines besseren belehren.

Die Muhkuh 26. Okt 2008 15:45

Re: brauche ini hilfe
 
Stimmt schon, ich hatte das mit dem FileExists nicht beachtet, sondern das einige "auf dem Pfad herumhacken", deswegen die Aussage.

da-zocka 26. Okt 2008 15:48

Re: brauche ini hilfe
 
Das hab mich mir für demnächst überlegt, wenn ich erstmal das problem gelöst hab.

taaktaak 26. Okt 2008 15:51

Re: brauche ini hilfe
 
Dann kläre doch zunächst einmal Detlefs Frage: Was steht in USER?
Wenn der Schnipsel aus Post#1 rudimentär deine LadeMethode wiedergibt, dann wird USER dort lokal deklariert - und hat keinen Inhalt und ganz bestimmt nicht den Inhalt, der an anderer Stelle einer "anderen" Variable USER übergeben wurde.

mkinzler 26. Okt 2008 15:52

Re: brauche ini hilfe
 
Das die Default-werte verwendet werden, weisst darauf hin, das etwas schief läuft. Deshalb muss man Schritt für Schritt überprüfen, was. Der erste Schritt ist es nunmal festzustellen, ob die Ini am richtigen Ort gesucht wird. Solange er aber nicht verrät was in User steht, stochern wir weiter im Nebel.

Blackheart 26. Okt 2008 15:52

Re: brauche ini hilfe
 
Benutz doch mal ParamStr.

DeddyH 26. Okt 2008 15:57

Re: brauche ini hilfe
 
Delphi-Quellcode:
var
ini: TIniFile;
User: string; //lokale Deklaration

begin
  //was soll denn hier in User drinstehen?
  ini:=TIniFile.Create ('/'+User+'.ini'); //relativer Pfad, das ist pöhse
  try
    //Tja, welchen Wert hat User hier?
    label1.caption:=ini.ReadString(User,'Punkte', '00000');
    label2.caption:=ini.ReadString(User,'Geld','00000');
    label3.caption:=ini.ReadString(User,'Geschwindigkeit','00000');
    label4.caption:=ini.ReadString(User,'Angriff','00000');
    label5.caption:=ini.ReadString(User,'Verteidigung','00000');
    label6.caption:=ini.ReadString(User,'Geschicklichkeit','00000');
    label7.caption:=ini.ReadString(User,'Ruf','00000');
  finally
    ini.free;
  end;
end;

da-zocka 26. Okt 2008 16:07

Re: brauche ini hilfe
 
1. In User soll der Username stehen den man am anfang angibt z. B. könnt man DeddyH angeben oder da-zocka, das ist aber alles schon fertig.

2.Der Pfad ist erstmal unwichtig(Er leitet automatisch auf das laufwerk C:).

3. User ist der Wert der Sektion.

mkinzler 26. Okt 2008 16:08

Re: brauche ini hilfe
 
Da es eine lokale Variable User existiert, die eine globale überdeckt.

ringli 26. Okt 2008 16:14

Re: brauche ini hilfe
 
Zitat:

Zitat von da-zocka
1. In User soll der Username stehen den man am anfang angibt z. B. könnt man DeddyH angeben oder da-zocka, das ist aber alles schon fertig.

2.Der Pfad ist erstmal unwichtig(Er leitet automatisch auf das laufwerk C:).

3. User ist der Wert der Sektion.

zu 2) Der Pfad ist erstmal das wichtigste. Wenn die Datei nicht gefunden wird von deinem Programm ist völlig egal was darin steht, denn es wird nie gelesen werden.
zu 3) In der Ini-Datei darf die Sektion dann aber nicht "User" heissen wenn du sie anschliessend mit dem Namen "da-zocka" auslesen möchtest. Ist doch irgendwie logisch, oder?

DeddyH 26. Okt 2008 16:17

Re: brauche ini hilfe
 
Ein Beispiel zur Verdeutlichung:
Delphi-Quellcode:
implementation

var User: string = 'Wuppdi';

procedure TFormBla.Machwas;
var User: string;
begin
  ShowMessage(User); //na, was wird ausgegeben?
end;
@ringli: der Sectionname soll ja aus der Variablen befüllt werden.

da-zocka 26. Okt 2008 16:26

Re: brauche ini hilfe
 
Das mit dem Username is doch schon alles geregelt.

DeddyH 26. Okt 2008 16:27

Re: brauche ini hilfe
 
Wie sieht der aktuelle Source denn jetzt aus?

da-zocka 26. Okt 2008 16:38

Re: brauche ini hilfe
 
Das ist immer noch der, nur der Username wird durch ein MessageDialog gesteuert.

mkinzler 26. Okt 2008 16:41

Re: brauche ini hilfe
 
Lass dir den dateinamen inkl. kompletten Pfad doch mal anzeigen

Die Muhkuh 26. Okt 2008 16:42

Re: brauche ini hilfe
 
Häng mal das Projekt an, so kommen wir einfach nicht weiter...

DeddyH 26. Okt 2008 16:44

Re: brauche ini hilfe
 
Das fürchte ich auch.

da-zocka 26. Okt 2008 16:49

Re: brauche ini hilfe
 
Sorry, 56KiloBites Leitung.

Mal kucken vllt kann ich diese Woche mal bei nem Freund uppen.

Die Muhkuh 26. Okt 2008 16:53

Re: brauche ini hilfe
 
Wenn Du nur die Sourcen uppst, sind das wohl nicht mal 10kb.

mkinzler 26. Okt 2008 16:55

Re: brauche ini hilfe
 
Dir den Pfad anziegen lassen, sollte aber ersteinmal reichen


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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