Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EAccesViolation beim Zugriff auf ini (https://www.delphipraxis.net/109551-eaccesviolation-beim-zugriff-auf-ini.html)

Bernhard Geyer 3. Mär 2008 15:03

Re: EAccesViolation beim Zugriff auf ini
 
Zitat:

Zitat von Fussball-Robby
Falls es dich interessiert, das ist meine einzige Globale Variable :wink:

form1 wird genauso als globale variable verwendet obwohl sie es hier nicht nötig ist.

Fussball-Robby 3. Mär 2008 15:06

Re: EAccesViolation beim Zugriff auf ini
 
Okay, dann eben zwei... Dass man nicht mit massig globalen Variablen arbeiten sollte, weiß ich außerdem aus eigener Erfahrung nur allzu gut

Nuclear-Ping 3. Mär 2008 15:12

Re: EAccesViolation beim Zugriff auf ini
 
Wenn man schon in Delphi programmiert, sollte man sich doch auch langsam von alten Pascal-Angewohnheiten verabschieden.

Statt ...
Delphi-Quellcode:
procedure load;
Var ini:TIniFile;
    fname:string;
    i,count:integer;
begin
  fname:=Unit1.sDir+'main.ini';
  form1.listbox1.clear;
  ini:=TIniFile.create(fname);
  try
     count:=ini.readinteger('main','forms',0);
     if count >0 then do
        for i:=1 to count do
           form1.listbox1.items.add(ini.readstring('main','form'+inttostr(i),''));
  finally
     ini.free;
  end;
end;
... kannst du die Funktion "Load" auch als Methode deiner "Form1" machen und hättest damit schonmal einen Schritt in Richtung OOP getan.

Delphi-Quellcode:
unit Unit1;

interface

uses ...;

type

  TForm1 = class(TForm)
    // ...
  private
    procedure Load;
    // ...
  public
    // ...
  end;

var
  // ...

implementation

{$R *.dfm}

procedure TForm1.Load;
var
  ini: TIniFile;
  FName: String;
  i, Count: Integer;
begin
  FName := Unit1.sDir + 'main.ini'; // << globale Variable *schauder* Mach dir 'ne "Config"-Klasse
  Listbox1.Clear;
  ini := TIniFile.Create(FName);
  try
    Count := ini.ReadInteger('main', 'forms', 0);
    if Count > 0 then
      for i := 1 to Count do
        Listbox1.Items.Add(ini.ReadString('main', 'form' + inttostr(i), ''));
  finally
    FreeAndNil (ini);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 2 von 2     12   

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