AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Scrennsaver Adressenverletung bei 0000000
Thema durchsuchen
Ansicht
Themen-Optionen

Scrennsaver Adressenverletung bei 0000000

Ein Thema von Johannes013 · begonnen am 19. Sep 2009 · letzter Beitrag vom 20. Sep 2009
Antwort Antwort
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#1

Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 14:03
Hi,

mein Bildschirmschoner macht mir Arger! Diese Befehlszeile meldet "Zugriffsverletzung bei Adresse 000000000":

SetIni.WriteString('Main','ColorValue',ColorToString(ColorD.Color));

mfg Johannes(013)
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 14:07
ist SetIni initialisiert?

was ist ColorD und wurde es, falls nötig, auch initialisert?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#3

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 22:06
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
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 22:19
hmmmm

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#5

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 23:26
ja, die zeile davor ist "begin ".

Hier ist der Code des Timers:

Delphi-Quellcode:
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;
und der des OnCreats:

Delphi-Quellcode:
procedure TSettings.FormCreate(Sender: TObject);
var s: string;
begin
   try
     SetIni:=TIniFile.Create(GetApplicationDirectory+'PegasusScreenSaver.ini');
     s:=SetIni.ReadString('Main','SaverType','System');
     if s='Systemthen begin Checker.Layout:=tlTop;TextAnim.Hide;RandPic.Hide;ChOwnType.Hide;end;
     if s='Nothen begin Checker.Layout:=tlCenter;TextAnim.Hide;RandPic.Hide;ChOwnType.Hide;end;
     if s='RandPicthen
       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='TxtAnimthen 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;
Das Problem ist auch, dass trotzdem der TRY-Anweisung ein Fehler von Windows kommt.

mfg (gute nacht!) Johannes013
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 19. Sep 2009, 23:48
Du speicherst Einstellungen des Benutzers in einem Timer? Bist du sicher, dass dein Konzept gut ist?

Was passiert denn, wenn du die Zeile auskommentierst? Kommt da der Fehler immer noch?

Zitat von Johannes013:
Das Problem ist auch, dass trotzdem der TRY-Anweisung ein Fehler von Windows kommt.
Wenn du das Programm aus Delphi startest, der Debugger also läuft, wird bei jeder Exception auch angehalten, es sei denn du deaktivierst das über das Häkchen in deren Anzeige. Beim Start außerhalb von Delphi passiert das dann nicht, da das try..except das abfängt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 20. Sep 2009, 00:05
Wenn das Ini-Objekt OK ist
und auch die ColorBox,
dann bleibt erstmal nur noch ColorToString als Ursache

Delphi-Quellcode:
var C: TColor;
  S: String;
begin
   {$C+}   
   Assert(Assigned(ColorD));
   C := ColorD.Color;
   S := ColorToString(C);
   Assert(Assigned(SetIni));
   SetIni.WriteString('Main','ColorValue',S);
aber das mit dem Timer ist wirklich nicht so optimal (es sei denn, der wird nicht grad oft ausgeführt)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Scrennsaver Adressenverletung bei 0000000

  Alt 20. Sep 2009, 10:24
Zitat:
(es sei denn, der wird nicht grad oft ausgeführt)
Wobei bei einem Timer nicht ausgegangen werden kann.
Ich würde dem Timer auch eine eigene TiniFile-Instanz gönnen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz