AGB  ·  Datenschutz  ·  Impressum  







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

Speicher Problem

Ein Thema von Z32 · begonnen am 23. Mär 2007 · letzter Beitrag vom 26. Mär 2007
Antwort Antwort
Seite 1 von 3  1 23      
Z32
(Gast)

n/a Beiträge
 
#1

Speicher Problem

  Alt 23. Mär 2007, 14:49
Hallo,

Ich habe ein Problem beim speichern von Einstellungen in INI Dateien und blicke überhaupt nicht, was da nicht stimmt.

Also mein Programm erstellt sich beim starten eine INI Datei, aber nur dann wenn sie noch nicht vorhanden ist. Das habe ich im MainForm.Create so gelöst:

Delphi-Quellcode:
If not fileexists('name.ini') then
begin
//anlegen der INI Datei
end;
Dann habe ich im FORM.Show meines Einstellungs Forms das hier geschreiben, um auszulesen, wie die checkboxen belegt werden müssen:

Delphi-Quellcode:
If ini.ReadString('bla','bla','bla')='truethen
checkbox1.checked:=true
else
checkbox1.checked:=false;
Und als letztes jetzt noch, das wenn man den speicher button drückt, die Einstellungen in der INI Datei geändert werden:

Delphi-Quellcode:
if checkbox1.Checked=true then
ini02.WriteString('bla','bla','true')
else
ini02.WriteString('bla','bla','false');
Soweit dazu...

Das klappt auch alles, aber nur solange, wie man sich nicht abmeldet, oder neu startet. Danach stehen alle Einstellungen wieder auf der Standard Einstellung, also so wie die Einstellungen gemacht werden, wenn die INI Datei neu angelegt wird. Das finde ich äußerst merkwürdig und bräcuhte da mal eure Hilfe.

Nur so als Info, es gibt eine Einstellung, da erstelle ich einen Autostarteintrag, auch wenn meine Anwendung nach einer neuen Anmeldung mir sagt die Funktion wäre aus, startet das Programm trotzten automatisch...

Ich hoffe ihr könnt mir da weiterhelfen...

//EDIT: Fehler im Code behoben
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Speicher Problem

  Alt 23. Mär 2007, 14:57
Hast du die Ini-datei zurückgeschrieben?
Markus Kinzler
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Speicher Problem

  Alt 23. Mär 2007, 15:06
Delphi-Quellcode:
If ini.ReadString('bla','bla','bla')='truethen
checkbox1.checked:='true
else
checkbox1.checked:='false';
Warum arbeitest Du nicht mit Boolean
Blackheart
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Speicher Problem

  Alt 23. Mär 2007, 15:08
Inis braucht man nicht zurückschreiben, soweit ich weiß. Hab zumindest noch nie irgendwas von wegen ini.Save oder so in die Richtung benutzt. Weiß aber auch nicht, ob das zurückschreiben erst beim Free passiert.

Allerdings sehe ich in dem Code da ein paar Unsauberkeiten.

Die Klasse "TIniFile" implementiert nicht nur ReadString und WriteString, sondern auch ReadBool, WriteBool, ReadInteger, WriteInteger, ReadFloat, WriteFloat, usw.

Du kannst also gleich mit CheckBox1.Checked := Ini.ReadBool ('Section', 'Ident', TRUE { Default }) zuweisungen machen. Und umgekehrt genauso: Ini.WriteBool ('Section', 'Ident', CheckBox1.Checked);

FormShow ist auch kein guter Platz, um solche Sachen zu machen. Warum machst du das nicht gleich mit im FormCreate?

Weiterhin brauchst du nicht prüfen, ob die Ini schon existiert. Ini := TIniFile.Create (FileName) erstellt die Ini, falls sie nicht vorhanden ist, ansonsten wird sie geöffnet und geladen.
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#5

Re: Speicher Problem

  Alt 23. Mär 2007, 15:14
Zitat von mkinzler:
Hast du die Ini-datei zurückgeschrieben?
Was genau ist damit gemeint? Wie kann ich denn was zurückschreiben?


Zu Nuclear-Ping:

Ok dann werde ich meinen Code mal ein bisschen überarbeiten. Aber kann das den die Lösung für mein Problem sein? Wo hackst denn da, also mal von ein paar unreinheiten im Code, die ich jetzte ausbessern werde...
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Speicher Problem

  Alt 23. Mär 2007, 15:22
Am Besten Du zeigst mal deinen kompletten Code sonst ist das nur ein Raten.
Schon das hier kann nich klappen checkbox1.checked:='false'; da ein Boolean erwartet wird.
Blackheart
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#7

Re: Speicher Problem

  Alt 23. Mär 2007, 16:59
Mit "zurückschreiben" ist wohl das Speichern gemeint. Aber meiner Erfahrung nach ist das bei Ini-Files nicht explizit nötig.
Delphi-Quellcode:
procedure TMyForm.LoadSettings;
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create ('Pfad\Dateiname');

  try
    MyInput.Text := Ini.ReadString ('Bla', 'MyInput', '');
    MyCheckbox.Checked := Ini.ReadString ('Bla', 'MyCheckbox', TRUE);
    ...
  finally
    FreeAndNil (Ini);
  end;
end;

procedure TMyForm.SaveSettings;
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create ('Pfad\Dateiname');

  try
    Ini.WriteString ('Bla', 'MyInput', MyInput.Text);
    Ini.WriteBool ('Bla', 'MyCheckbox', MyCheckbox.Checked);
    ...
  finally
    FreeAndNil (Ini);
  end;
end;
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#8

Re: Speicher Problem

  Alt 23. Mär 2007, 21:42
Zitat von Blackheart:
Am Besten Du zeigst mal deinen kompletten Code sonst ist das nur ein Raten.
Schon das hier kann nich klappen checkbox1.checked:='false'; da ein Boolean erwartet wird.
Das war nur ein abschreibe Fehler, im Orginal Code steht da natürlich das richtige...

Den ganzen Code könnte ich natürlich posten, aber eigentlic steht der doch schon in meinem ersten Beitrag, nur das halt noch Inhalt da ist. Ich werde morgen aber mal den überarbeiteten Code schreiben.

Aber kann es vielleicht auch daran liegen?:

Delphi-Quellcode:
ini:=tinifile.create(filename);
try
   //zugriff auf ini datei
   try
      //zugriff auf registry
   finally
      //zugriff auf registry ende
   end;
finally
ini.free
end;
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Speicher Problem

  Alt 24. Mär 2007, 04:32
Nein, nicht an der try..finally Verschachtelung.

Übrigens:

Delphi-Quellcode:
procedure TMyForm.LoadSettings;
  //...

  try
    MyInput.Text := Ini.ReadString ('Bla', 'MyInput', '');
    MyCheckbox.Checked := Ini.ReadString ('Bla', 'MyCheckbox', TRUE); // <---<< ? String und Bool ?
    //...
  
end;
Delphi-Quellcode:
procedure TMyForm.LoadSettings;
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create ('Pfad\Dateiname');
  try
    MyInput.Text := Ini.ReadString ('Bla', 'MyInput', '');
    MyCheckbox.Checked := Ini.ReadBoolean ('Bla', 'MyCheckbox', TRUE);
    ...
  finally
    FreeAndNil (Ini);
  end;
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#10

Re: Speicher Problem

  Alt 24. Mär 2007, 18:39
So, hab jetzt nochmal ein bisschen an meiner Anwendung rumgebastelt un dabei folgendes Festgestellt:

Wenn ich aus meinen Einstellungen die Autostartfunktion entferne, läuft das Programm einwandfrei und ohne probleme, auch nach einem Neustart sind alle Einstellungen noch richtig. Halt so wie das alles so sein muss. Mit der Autostarteinstellung hab ich das oben geschilderte Problem, dass alle eingestelleten Einstellungen nach einem neustart verloren sind.

Das heiß ein meiner Autostartfunktion muss ein fehler sein, ich poste mal den Code:

Zum Eintragen: (der Code zum reinschreiben ist nicht von mir)

Delphi-Quellcode:
var Reg: TRegistry

Reg := TRegistry.Create;
try
   Reg.RootKey := HKEY_CURRENT_USER;
   Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
   Reg.WriteString('FMManager', ParamStr(0));
   Reg.CloseKey;
finally
   Reg.Free;
end;
Und zum Löschen: (der Code ist auch nicht von mir)

Delphi-Quellcode:
Reg := TRegistry.Create;
try
   Reg.RootKey := HKEY_CURRENT_USER;
   Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
   Reg.DeleteValue('FMManager');
   Reg.CloseKey;
finally
   Reg.Free;
end;
Ich hoffe in dem Code erkennt jemand den Fehler...

Ich habe ja so eine Vermutung, obwohl die eigntlich nicht sein kann. Und zwar, dass durch diese Autostarfunktion, immer die nur die Anwendung irgentwohinkopiert wird und dann ausgeführt wird, daraus folgt, dass die INI's immer wieder neu erstellt werden.

Könnte das stimmen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 11:25 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