Entwickler-Ecke

Dateizugriff - Fehler beim compilieren!! Syntax???? [gelöst]


Akut-Programming - Do 21.08.03 13:07
Titel: Fehler beim compilieren!! Syntax???? [gelöst]
Hi Leuts, bins nochma!

Unzwar folgendes, bin grad dabei n kleen Dateibrowser zu proggn nur da steh ich jetzt grad vor n Problem. :eyes: Ich wollte ini Dateien verwenden um Einstellungen zu speichern. Jetzt hab ich mit Hilfe eines hier veröffentlichten Tutorial dies versucht zu verwirklichen. Nur bekomme ich beim Compilieren der Anwendung folgenden Fehler:

Zitat:
[Fehler] Unit2.pas(75): Record, Objekt oder Klassentyp erforderlich


Weiß da jemand wie ich ihn beheben kann? :roll:


Tino - Do 21.08.03 13:28

Hi!

Besser ist es wenn du uns den Sourcecode mal postest. Dann können wir auch helfen.

Gruß
Tino


Akut-Programming - Do 21.08.03 14:00

okay, dann hab ich hier mal n bissl code! Is die Unit, in der der Fehler auftritt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, IniFiles;

type
  TForm2 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm2.BitBtn1Click(Sender: TObject);
var pfad:string;
    ini:TIniFile;
begin
pfad:=ExtractFilePath(ParamStr(0));
if CheckBox1.Checked=True then
 begin
  try ini:=TIniFile.Create(pfad+'einstellungen.ini');
  ini.WriteInteger('einstellungen','LoadNotice',1);
  finally ini.free;
 end
  else
   try ini:=TIniFile.Create(pfad+'einstellungen.ini');
   ini.WriteInteger('einstellungen','LoadNotice',0);
   finally ini.free;

   if CheckBox2.Checked=True then
 begin
  try ini:=TIniFile.Create(pfad+'einstellungen.ini');
  ini.WriteInteger('einstellungen','WindowHeight',Form1.Height);
  ini.WriteInteger('einstellungen','WindowWidth',Form1.Width);
  finally ini.free;
 end 
  else
   try ini:=TIniFile.Create(pfad+'einstellungen.ini');
   ini.WriteInteger('einstellungen','WindowHeight',605);
   ini.WriteInteger('einstellungen','WindowWidth',853);
   finally ini.free;

   if CheckBox3.Checked=True then
 begin
  try ini:=TIniFile.Create(pfad+'einstellungen.ini');
  ini.WriteInteger('einstellungen','autostart',1);
  finally ini.free;
 end
  else
   try ini:=TIniFile.Create(pfad+'einstellungen.ini');
   ini.WriteInteger('einstellungen','autostart',0);
   finally ini.free;
   end;
Form2.Close;
end;
end. //-----------------------> Hier kommt der Fehler


Keldorn - Do 21.08.03 14:08

Hallo

wenn man den Code ein wenig einrückt, sieht man die Fehler


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if CheckBox1.Checked=True then
  begin
    try
      ini:=TIniFile.Create(pfad+'einstellungen.ini');
      ini.WriteInteger('einstellungen','LoadNotice',1);
    finally
      ini.free;
    end//fehlt bei dir
  end
 else
  ...

es heißt

Delphi-Quelltext
1:
2:
3:
4:
5:
try
  ...
finally
  ...
end;

bei dir fehlen ein paar ends. rück den code mal ein wenig anders ein und ergänze die fehlenden ends

Mfg Frank


Keldorn - Do 21.08.03 14:15

öhm warum öffnets du jedes mal die ini und
gehts nicht so vor
ini erstelln
wenn checkbox1 dann schreibe wert1 sonst schreibe Wert2
wenn checkbox2 dann schreibe wert3 sonst schreibe Wert4
ini schließen


Akut-Programming - Do 21.08.03 14:16

Hey Spitze!! :dance2:

Es funzt!! Ganz großes DANKE!! :beer:


Akut-Programming - Do 21.08.03 14:18

Keldorn hat folgendes geschrieben:
warum gehts nicht so vor
ini erstelln
wenn checkbox1 dann schreibe wert1 sonst schreibe Wert2
wenn checkbox2 dann schreibe wert3 sonst schreibe Wert4
ini schließen


Meintest du, das ich dies bei der Checkbox auf OnClick machen sollte?


Keldorn - Do 21.08.03 14:29

nee, ich mein das so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure buttonklick;
......
  pfad:=ExtractFilePath(ParamStr(0));
  ini:=TIniFile.Create(pfad+'einstellungen.ini');
  try
    if CheckBox1.Checked=True then
      ini.WriteInteger('einstellungen','LoadNotice',1)
     else
      ini.WriteInteger('einstellungen','LoadNotice',0);
    if CheckBox2.Checked=True then
      begin
        ini.WriteInteger('einstellungen','WindowHeight',Form1.Height);
        ini.WriteInteger('einstellungen','WindowWidth',Form1.Width);
      end
     else
      begin
        ini.WriteInteger('einstellungen','WindowHeight',605);
        ini.WriteInteger('einstellungen','WindowWidth',853);
      end;
    if CheckBox3.Checked=True then
      ini.WriteInteger('einstellungen','autostart',1)
     else
      ini.WriteInteger('einstellungen','autostart',0);
  finally
    ini.free;
  end;

ungetestet, nur dein code umkopiert
und das ganze geht noch kürzer:
statt

Delphi-Quelltext
1:
2:
3:
4:
    if CheckBox1.Checked=True then
      ini.WriteInteger('einstellungen','LoadNotice',1)
     else
      ini.WriteInteger('einstellungen','LoadNotice',0);

schreib mal:

Delphi-Quelltext
1:
ini.Writebool('einstellungen','LoadNotice',checkbox1.checked)                    

auslkesen entsprechend mit readbool


Akut-Programming - Do 21.08.03 14:43

Aber müsste ich bei der Sache nicht dann noch sagen, welchen Boolean er eintragen soll?


Quelltext
1:
ini.Writebool('einstellungen','LoadNotice',checkbox1.checked)                    


Akut-Programming - Do 21.08.03 14:46

Ahh ja, okay verstehe auch deinen zweiten hinweis.

Zitat:
ini.Writebool('einstellungen','LoadNotice',checkbox1.checked)


er wertet dann jeweils den boolean der checkbox aus und trägt diesen ein!?


Keldorn - Do 21.08.03 14:46

Akut-Programming hat folgendes geschrieben:
Aber müsste ich bei der Sache nicht dann noch sagen, welchen Boolean er eintragen soll?


Quelltext
1:
ini.Writebool('einstellungen','LoadNotice',checkbox1.checked)                    

checkbox1.checked ist doch schon ein bool ;)

edit: genau


Akut-Programming - Do 21.08.03 14:49

Keldorn hat folgendes geschrieben:

checkbox1.checked ist doch schon ein bool ;)


Yo, hab ich jetzt auch raus! Musste n paar mitn Kopp vor de Wand kloppen :autsch: , dann isses mir aufgefallen! *g*


Akut-Programming - Do 21.08.03 14:50

Ich muss sagen, sehr nett, die Hilfe die man hier bekommt. In manch anderen Foren hätt man auf sowas keene Antwort bekomm. Also noch ma n rießen Dank für die Hilfe. :lol: