[Delphi] Problem z odczytywaniem danych z pliku .ini

Odpowiedz Nowy wątek
2006-12-06 18:37

Rejestracja: 15 lat temu

Ostatnio: 4 lata temu

0

Pisze prosty program ktory wczytuje opcje domyslne z pliku *.ini, mam jednak maly problem.

Kod wyglada tak

procedure TForm1.Default01Click(Sender: TObject);
begin
 Ini := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'config.ini');

  try
    Ini.WriteString('config', 'uodata', Katalog01.Text );
    Ini.WriteString('config', 'adres', Adres01.Text );
    Ini.WriteString('config', 'port', Port01.Text );
    Ini.WriteBool('config', 'encryption', Checkbox1.Checked);
    finally
      INI.Free;
    end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 if not FileExists(ExtractFilePath(Application.ExeName) + 'config.ini') then
  begin
    ShowMessage('Brak pliku z konfiguracja, tworze nowy plik');
    Ini := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'config.ini');
  end
  else
   try

    Katalog01.Text := Ini.ReadString('config', 'uodata', '') ;
    Adres01.Text := Ini.ReadString('config', 'adres', '') ;
    Port01.Text := Ini.ReadString('config', 'port', '') ;
    if ini.ReadString('config', 'encryption', '0') = '0' then
     CheckBox1.Checked := false
     else
      CheckBox1.Checked := true;
   finally
   Ini.Free;
   end;
end;

INI : TiniFile; zostalo zadeklarowane w miejscu gdzie mozna deklarowac zmienne globalne.

Program zapisuje dane do pliku .ini bez problemu, jednak ma problemy z odczytaniem podczas startu programy tych danych... W zamian otrzymuje komunikat :

"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00463b2b in module 'Project1.exe'. Read of Address 00000000'. Process stopped. Use Step or Run to continue. "

Po czym program sie uruchamia jednak bez wczytania wartosci z pliku .ini.

Chce aby program na starcie ladowal wartosci domyslne ktore zostaly wczesniej zapisane w pliku .ini

Zna ktos na to jakas solucje lub moze wskazac mi moj blad?

P.S. Czemu moj poprzedni taki sam temat zostal skasowany skoro nie złamałem ani jednego punktu regulaminu, a odpowiedz której mi udzielono nic nie rozwiązywała, lecz jedynie okazywała "niepewnosc" autora tej odpowiedzi do tego co pisze...

Mam szczera nadzieje ze tym razem otrzymam pomoc...

Pozostało 580 znaków

spc
2006-12-06 19:37
spc

Rejestracja: 14 lat temu

Ostatnio: 1 rok temu

0

Chcesz czytac z pliku ale przed tym go nie otworzyles.


00, OK, 00, 00
...dziś się to robi na sprzętach, kiedyś na patentach...

Pozostało 580 znaków

2009-12-31 07:09

Rejestracja: 16 lat temu

Ostatnio: 1 rok temu

0
  end
  else
   try
    begin
    Ini := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'config.ini');
    Katalog01.Text := Ini.ReadString('config', 'uodata', '') ;
    Adres01.Text := Ini.ReadString('config', 'adres', '') ;
    Port01.Text := Ini.ReadString('config', 'port', '') ;
    if ini.ReadString('config', 'encryption', '0') = '0' then
     CheckBox1.Checked := false
     else
      CheckBox1.Checked := true;
   end;
   finally
   Ini.Free;
   end;
end;

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0