Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - EAccessViolation at address 0043AF7C. Read of addr 00000070


DSl1mSh4dy - So 11.04.10 11:07
Titel: EAccessViolation at address 0043AF7C. Read of addr 00000070
Moin,

habe mal wieder einen Fehler und weiß nicht so genau warum.
Hier mal der Code:


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:
procedure TForm1.FormCreate(Sender: TObject);
var
   Ini: TIniFile;
   Speichern: Boolean;
begin
   ProgrammOrdner := ExtractFilePath(Application.ExeName) + 'Produkte.ini';
   Ini := TIniFile.Create(ProgrammOrdner);
   Ampel.Visible := false;
   Rot.Visible := false;
   Gelb.Visible := false;
   Gruen.Visible := false;
   Memo2.Width := 633//521
   Try
     Speichern := Ini.ReadBool('Optionen''Speichern', false);
   finally
     Ini.Free;
   end;
   if Speichern then begin         // <<<<<<<<< Hier zeigt er den Fehler!!!
      Speichern1.Checked := true;
   end else begin
     Speichern1.Checked := false;
   end;
end;


Kann mir denn jemand sagen, was ich da falsch mache???

Danke schonmal und Gruß


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am So 11.04.2010 um 12:13


DSl1mSh4dy - So 11.04.10 11:43

Fehler gefunden - aber noch ist mir unklar was genau ich falsch mache - aus einer funktion raus die ich in Unit1 programmiert habe müsste ich doch die Farbe von Form2 ändern können, oder?

Code dazu:

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:
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:
function changeColor(Farbe: String): Integer;
begin
     if Farbe = 'BrownGreen' then begin
     Form1.Color := clMaroon;
     Form1.Memo1.Color := clLime;
     Form1.Memo2.Color := clLime;
     Form1.Label1.Font.Color := clWhite;
     Form2.Color := clMaroon;
     Form2.Label1.Font.Color := clWhite;
     Form2.Label2.Font.Color := clWhite;
     Form2.Label3.Font.Color := clWhite;
     Form2.Edit1.Color := clLime;
     Form2.Edit2.Color := clLime;
     Form2.Edit3.Color := clLime;
     Form2.Edit4.Color := clLime;
     Form2.Edit5.Color := clLime;
     Form2.Edit6.Color := clLime;
     Form2.Edit7.Color := clLime;
     Form2.Edit8.Color := clLime;
     Form2.Edit9.Color := clLime;
     Form2.Edit10.Color := clLime;
     Form2.Edit11.Color := clLime;
     Form2.Edit12.Color := clLime;
     Form2.Edit13.Color := clLime;
     Form2.Edit14.Color := clLime;
     Form2.Edit15.Color := clLime;
     Form2.Edit16.Color := clLime;
     Form2.Edit17.Color := clLime;
     Form2.Edit18.Color := clLime;
     Form2.Edit19.Color := clLime;
     Form2.Edit20.Color := clLime;
     Form2.Edit21.Color := clLime;
     Form2.Edit22.Color := clLime;
     Form2.Edit23.Color := clLime;
     Form2.Edit24.Color := clLime;
     Form2.Edit25.Color := clLime;
     Form2.Edit26.Color := clLime;
     Form2.Edit27.Color := clLime;
     Form2.Edit28.Color := clLime;
     Form2.Edit29.Color := clLime;
     Form2.Edit30.Color := clLime;
     Form2.Edit31.Color := clLime;
     Form2.Edit32.Color := clLime;
   end;
   if Farbe = 'Pink' then begin
     Form1.Color := $00ff00ff;
     Form1.Memo1.Color := $00ffaaff;
     Form1.Memo2.Color := $00ffaaff;
     Form1.Label1.Font.Color := clWhite;
   end;
   result := 1;
end;



Bei den ganzen Sachen wo "Form2" davor steht kommt der EAccessViolation Fehler - aber das müsste doch funktionieren?

Gruß


der organist - So 11.04.10 12:02

user profile iconDSl1mSh4dy hat folgendes geschrieben Zum zitierten Posting springen:
Fehler gefunden - aber noch ist mir unklar was genau ich falsch mache - aus einer funktion raus die ich in Unit1 programmiert habe müsste ich doch die Farbe von Form2 ändern können, oder?

Code dazu:

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:
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:
function changeColor(Farbe: String): Integer;
begin
     if Farbe = 'BrownGreen' then begin
     Form1.Color := clMaroon;
     Form1.Memo1.Color := clLime;
     Form1.Memo2.Color := clLime;
     Form1.Label1.Font.Color := clWhite;
     Form2.Color := clMaroon;
     Form2.Label1.Font.Color := clWhite;
     Form2.Label2.Font.Color := clWhite;
     Form2.Label3.Font.Color := clWhite;
     Form2.Edit1.Color := clLime;
     Form2.Edit2.Color := clLime;
     Form2.Edit3.Color := clLime;
     Form2.Edit4.Color := clLime;
     Form2.Edit5.Color := clLime;
     Form2.Edit6.Color := clLime;
     Form2.Edit7.Color := clLime;
     Form2.Edit8.Color := clLime;
     Form2.Edit9.Color := clLime;
     Form2.Edit10.Color := clLime;
     Form2.Edit11.Color := clLime;
     Form2.Edit12.Color := clLime;
     Form2.Edit13.Color := clLime;
     Form2.Edit14.Color := clLime;
     Form2.Edit15.Color := clLime;
     Form2.Edit16.Color := clLime;
     Form2.Edit17.Color := clLime;
     Form2.Edit18.Color := clLime;
     Form2.Edit19.Color := clLime;
     Form2.Edit20.Color := clLime;
     Form2.Edit21.Color := clLime;
     Form2.Edit22.Color := clLime;
     Form2.Edit23.Color := clLime;
     Form2.Edit24.Color := clLime;
     Form2.Edit25.Color := clLime;
     Form2.Edit26.Color := clLime;
     Form2.Edit27.Color := clLime;
     Form2.Edit28.Color := clLime;
     Form2.Edit29.Color := clLime;
     Form2.Edit30.Color := clLime;
     Form2.Edit31.Color := clLime;
     Form2.Edit32.Color := clLime;

   end;
   if Farbe = 'Pink' then begin
     Form1.Color := $00ff00ff;
     Form1.Memo1.Color := $00ffaaff;
     Form1.Memo2.Color := $00ffaaff;
     Form1.Label1.Font.Color := clWhite;
   end;
   result := 1;
end;



Bei den ganzen Sachen wo "Form2" davor steht kommt der EAccessViolation Fehler - aber das müsste doch funktionieren?

Gruß


Bei deiner AV kann ich dir nich helfen, aber ich empfehle dir FindComponent, dann wird dein Code besser (=übersichtlicher, kürzer...). ;)
Gruss, Lukas


BenBE - So 11.04.10 21:39

Ferner ist Speichern nicht initialisiert in deiner ersten geposteten Routine.

Außerdem: Wo stellst Du sicher, dass Form2 initialisiert ist?

Ferner: Die Initialisierung einer Variable, die von einerm Resourcenschutzblock geschützt werden soll, sollte direkt vor dem Block erfolgen und nicht noch durch weitere Anweisungen abgetrennt sein.