![]() |
Scrennsaver Adressenverletung bei 0000000
Hi, :-D
mein Bildschirmschoner macht mir Arger! Diese Befehlszeile meldet "Zugriffsverletzung bei Adresse 000000000":
Delphi-Quellcode:
:?:
SetIni.WriteString('Main','ColorValue',ColorToString(ColorD.Color));
mfg Johannes(013) |
Re: Scrennsaver Adressenverletung bei 0000000
ist SetIni initialisiert?
was ist ColorD und wurde es, falls nötig, auch initialisert? |
Re: Scrennsaver Adressenverletung bei 0000000
sorry, hab vergessen das zu sagen:
-SetIni ist (natürlich) unter var deklariert (sie wird auch erstellt) -ColorD ist ein ColorDialog, der user soll die Farbe selbst bestimmen können naja, das ist alles. dank im voraus |
Re: Scrennsaver Adressenverletung bei 0000000
hmmmm :gruebel:
OK, dann ... bist'e sicher, daß es diese Zeile ist und nicht die davor? (wenn der Debugger nach der Exception angehalten hat, ist er schon eine Zeile weiter) Ansonsten bleibt dir nur der Weg diese Zeile in ihre Bestandteile zu zelegen und alles einzeln zu prüfen. |
Re: Scrennsaver Adressenverletung bei 0000000
ja, die zeile davor ist "
Delphi-Quellcode:
".
begin
Hier ist der Code des Timers:
Delphi-Quellcode:
und der des OnCreats:
procedure TSettings.Timer1Timer(Sender: TObject);
begin SetIni.WriteString('Main','ColorValue',ColorToString(ColorD.Color)); // Farbe aus ColorDialog Label2.Color:=ColorD.Color; //Anzeige der Fabe ColorChange.Text:=ColorToString(ColorD.Color); // TComboBox end;
Delphi-Quellcode:
Das Problem ist auch, dass trotzdem der TRY-Anweisung ein Fehler von Windows kommt.
procedure TSettings.FormCreate(Sender: TObject);
var s: string; begin try SetIni:=TIniFile.Create(GetApplicationDirectory+'PegasusScreenSaver.ini'); s:=SetIni.ReadString('Main','SaverType','System'); if s='System' then begin Checker.Layout:=tlTop;TextAnim.Hide;RandPic.Hide;ChOwnType.Hide;end; if s='No' then begin Checker.Layout:=tlCenter;TextAnim.Hide;RandPic.Hide;ChOwnType.Hide;end; if s='RandPic' then begin Checker.Layout:=tlBottom; // Label mit "X" als Marker ChOwnType.Layout:=tlTop; // Genau das gleiche TextAnim.Show; // Label der Auswahl RandPic.Show; // Label der Auswahl ChOwnType.Show; // Marker ShowRandPic; // Prozedure die versch. Sachen zeigt. Label2.Color:=StringToColor(SetIni.ReadString('Main','ColorValue','clblack')); // Lesen ColorD.Color:=StringToColor(SetIni.ReadString('Main','ColorValue','clblack')); //Lesen end; if s='TxtAnim' then begin Checker.Layout:=tlBottom;ChOwnType.Layout:=tlBottom;TextAnim.Show;RandPic.Show;ChOwnType.Show;end; except ShowMessage('Es ist ein Fehler aufgetreten! Saver wird fortgesetz!'); end; mfg (gute nacht!) Johannes013 |
Re: Scrennsaver Adressenverletung bei 0000000
Du speicherst Einstellungen des Benutzers in einem Timer? Bist du sicher, dass dein Konzept gut ist? :gruebel:
Was passiert denn, wenn du die Zeile auskommentierst? Kommt da der Fehler immer noch? ;-) Zitat:
|
Re: Scrennsaver Adressenverletung bei 0000000
Wenn das Ini-Objekt OK ist
und auch die ColorBox, dann bleibt erstmal nur noch ColorToString als Ursache
Delphi-Quellcode:
aber das mit dem Timer ist wirklich nicht so optimal (es sei denn, der wird nicht grad oft ausgeführt)
var C: TColor;
S: String; begin {$C+} Assert(Assigned(ColorD)); C := ColorD.Color; S := ColorToString(C); Assert(Assigned(SetIni)); SetIni.WriteString('Main','ColorValue',S); |
Re: Scrennsaver Adressenverletung bei 0000000
Zitat:
Ich würde dem Timer auch eine eigene TiniFile-Instanz gönnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr. |
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