AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi "Ungültige Zeigeroperation" beim Ändern des CheckBox-Status
Thema durchsuchen
Ansicht
Themen-Optionen

"Ungültige Zeigeroperation" beim Ändern des CheckBox-Status

Ein Thema von Tyler · begonnen am 8. Okt 2004 · letzter Beitrag vom 8. Okt 2004
Antwort Antwort
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#1

"Ungültige Zeigeroperation" beim Ändern des CheckB

  Alt 8. Okt 2004, 11:52
Hallo,

mich beschäftigt gerade folgende Routine, die den Status einer Checkbox aus einer INI-Datei lesen soll:

Delphi-Quellcode:
  ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '\init.ini');
  ed_Pfad.Text := ini.ReadString('SAVE', 'Quelle', 'Pfad zur Quelldatenbank');
  ed_Ziel.Text := ini.ReadString('SAVE', 'Ziel', 'Name der Zieldatenbank auf dem MySQL-Server');

  s := ini.ReadInteger ('SAVE', 'Autostart', 0);
  if s = 0 then cb_autostart.State := cbUnChecked
    else cb_autostart.State := cbChecked;
  s := ini.ReadInteger ('SAVE', 'DeleteZiel', 0);
  if s = 0 then cb_DelZiel.State := cbUnChecked
    else cb_DelZiel.State := cbChecked;

  ini.Free;
Das führt zu der Fehlermeldung der Klasse EInvalidPointer:
"Ungültige Zeigeroperation"
Breakpoint steht nach "Application.Run", also nicht direkt auf der obigen Routine, die im OnCreate einer Form läuft.

Was ich bereits versucht habe:

- die Routine ins OnPaint oder OnShow-Ereignis verlegt
- ursprünglich wurde direkt ein String aus der Ini gelesen, und in einen Boolean umgewandelt und so an die Eigenschaft "cb_Autostart.Checked" übergeben

Weiss jemand Rat? Ich bin ehrlich gesagt n bissel verzweifelt

danke
tyler
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:02
Hai Tyler,

es wundert mich das Du den Code überhaupt Comilier kannst. TCheckBox.State := cbUnCheked meldet mir sofort der Compiler als Fehler.
Auf jeden fall geht es bei mir so ohne Probleme:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  ini : TIniFile;
  s : Integer;
begin
  ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'init.ini');
  try
    ed_Pfad.Text := ini.ReadString('SAVE', 'Quelle', 'Pfad zur Quelldatenbank');
    ed_Ziel.Text := ini.ReadString('SAVE', 'Ziel', 'Name der Zieldatenbank auf dem MySQL-Server');
    s := ini.ReadInteger ('SAVE', 'Autostart', 0);
    cb_autostart.Checked := s = 1;
    s := ini.ReadInteger ('SAVE', 'DeleteZiel', 0);
    cb_DelZiel.Checked := s = 1;
  finally
   ini.Free;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#3

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:03
und warum lässt du es nicht bei checkbox1.checked:=false?
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#4

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:10
Zitat von Sharky:
es wundert mich das Du den Code überhaupt Comilier kannst. TCheckBox.State := cbUnCheked meldet mir sofort der Compiler als Fehler.
Das war ja auch mein 2. Versuch.

Beim 1. Versuch hab ich es folgendermassen probiert:

cb_Autostart.Checked := StrToBool ( ini.ReadString('SAVE', 'Autostart', 'False'); das führte aber wie gesagt genau zu dem gleichen Fehler.

Vielen Dank auch für deinen Code, aber damit wird die Checkbox ja grundsätzlich auf TRUE gesetzt, oder nicht:
  cb_autostart.Checked := s = 1;
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:15
Zitat von Tyler:
Vielen Dank auch für deinen Code, aber damit wird die Checkbox ja grundsätzlich auf TRUE gesetzt, oder nicht:
  cb_autostart.Checked := s = 1;
nein, die bedingung s=1 ist true wenn s:=1 und false wenn s:=0 ist !
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#6

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:31
achso.. also ein verkürztes IF?

IF S = 1 THEN CHECKED := TRUE;

ergibt

CHECKED := S = 1

Wenn ja, dann wieder was interessantes dazugelernt
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#7

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:38
jaaaaaa
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#8

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 12:43
löl

/me *hocherfreut-ist*

(Die Mod´s übersehen jetzt hoffentlich das bissel gespamme :prosit
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 14:25
Zitat von Tyler:
achso.. also ein verkürztes IF?

IF S = 1 THEN CHECKED := TRUE;

ergibt

CHECKED := S = 1..
Noch mal kurz eine erklärung zu dem Code.
Das ganze läuft darauf hinaus das eine boolesche Operation durchgeführt wird. Diese liefert logischerweise immer ein True oder ein False.
Code:
1 = 1 := True
1 = 2 := False
1 <> 2 := True;
1 < 2 := True
1 > 2 := False
'Hallo' = 'blubb' := False;
usw.
Mit diesem "wissen" kann man oftmals eine unnötige IF-THEN-ELSE konstruktion umgehen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#10

Re: "Ungültige Zeigeroperation" beim Ändern des Ch

  Alt 8. Okt 2004, 14:30
ich würd das so machen:
 checkbox1.checked := ini.ReadBool('Save','Autostart',True);
  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 16:38 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