AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Form close - EINvalidPointer

Ein Thema von Int3g3r · begonnen am 10. Apr 2019 · letzter Beitrag vom 10. Apr 2019
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.252 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 10:29
Zitat:
In deinem Fall mußt Du also unbedingt die TObjectlist löschen
...wieso? Ich verwalte einige der Forms in Objektlisten. (Owner = nil) Wenn man sich an die Regeln hällt, ist es kein Problem. Wichtig, die Liste im FormCreate/FormDestroy anlegen und zerstören.
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:29
Endlich !!

Habs herausgefunden!

Delphi-Quellcode:
   SetLength(MitarbeiterNamen, anzAktiveMitarbeiter-1);
   qryMitarbeiter.First;
   while not qryMitarbeiter.Eof do
      begin
         MitarbeiterNamen[i] := (qryMitarbeiterNAME.AsString + ' ' + qryMitarbeiterVORNAME.AsString);
         inc(i);
         qryMitarbeiter.Next;
      end;
Delphi-Quellcode:
 // KORREKT
SetLength(MitarbeiterNamen, anzAktiveMitarbeiter)
Kann mir jemand erklären warum ich hier keine exception bekommen habe ?
Er versucht einen String in den MitarbeiterNamen[i] einzutragen. Das Array war zu klein mit dem -1. Da hätte er doch motzen müssen wenn das Array zu klein ist und somit nicht über den index zugreifen kann.

Mfg Int3g3r

Geändert von Int3g3r (10. Apr 2019 um 13:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.070 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:34
Kann mir jemand erklären warum ich hier keine exception bekommen habe ?
Er versucht einen String in den MitarbeiterNamen[i] einzutragen. Das Array war zu klein mit dem -1. Da hätte er doch motzen müssen wenn das Array zu klein ist und somit nichts in den index eintragen kann.
Weil Speicher Speicher ist. Und solange der Speicher von Mitarbeiter[i] verfügbar und schreibbar ist, ist alles "okay".
Okay in der Hinsicht, dass man Daten darein schreiben kann. Das Problem ist nur, dass du damit wahrscheinlich Speicher eines andere Objekts o.ä. überschreibst weswegen die Chance besteht, dass du später ggf. "unerklärbare" Überraschungs-Exceptions bekommst an Stellen die eigentlich komplett unproblematisch sind, weil du dir vorher den Speicher zerschossen hast.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.252 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:44
Moin...
Dann würde ich anstelle des Arrays eine
MitarbeiterList : TObjectList<TMitarbeiter>; und die Klasse dazu empfehlen. Da hast du die Größe des Arrays aus dem Kreuz.
Und solche Konstruckte sind mit der Klasse erledigt: qryMitarbeiterNAME.AsString + ' ' + qryMitarbeiterVORNAME.AsString
[Meine Meinung]
Arrays sind aus der Zeit wo es noch keine generischen Listen gab.

Geändert von haentschman (10. Apr 2019 um 13:52 Uhr)
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:54
Vielen dank für eure Hilfe!

@haentschman:

Könntest du bitte mein "Post - 11:05" Uhr auf der ersten Seite lesen ?
Hätte gerne eine Antwort darauf ob man nach der implementation private variablen deklarieren kann ? Wenn ja wie ?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
367 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:56
Endlich !!

Habs herausgefunden!

Delphi-Quellcode:
   SetLength(MitarbeiterNamen, anzAktiveMitarbeiter-1);
   qryMitarbeiter.First;
   while not qryMitarbeiter.Eof do
      begin
         MitarbeiterNamen[i] := (qryMitarbeiterNAME.AsString + ' ' + qryMitarbeiterVORNAME.AsString);
         inc(i);
         qryMitarbeiter.Next;
      end;
Delphi-Quellcode:
 // KORREKT
SetLength(MitarbeiterNamen, anzAktiveMitarbeiter)
Kann mir jemand erklären warum ich hier keine exception bekommen habe ?
Er versucht einen String in den MitarbeiterNamen[i] einzutragen. Das Array war zu klein mit dem -1. Da hätte er doch motzen müssen wenn das Array zu klein ist und somit nicht über den index zugreifen kann.

Mfg Int3g3r
Hast Du range-checking aktiviert, zumindest für den Debug-Build?
Peter Below
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 13:57
Hast Du range-checking aktiviert, zumindest für den Debug-Build?
Anscheinend nicht, wie lässt sich das aktivieren ?

Hab was gefunden :
Code:
{$R+} or {$R-} {$RANGECHECKS ON} or {$RANGECHECKS OFF}

Geändert von Int3g3r (10. Apr 2019 um 14:05 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
367 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 14:02
Hast Du range-checking aktiviert, zumindest für den Debug-Build?
Anscheinend nicht, wie lässt sich das aktivieren ?
Ist Teil der Konfiguration des Projektes, siehe nachfolgenden Screenshot.
Miniaturansicht angehängter Grafiken
options.png  
Peter Below
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#19

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 14:06
Hast Du range-checking aktiviert, zumindest für den Debug-Build?
Anscheinend nicht, wie lässt sich das aktivieren ?
Ist Teil der Konfiguration des Projektes, siehe nachfolgenden Screenshot.
Oh, sehr schön danke !
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.310 Beiträge
 
Delphi XE7 Professional
 
#20

AW: Form close - EINvalidPointer

  Alt 10. Apr 2019, 14:18
Vielen dank für eure Hilfe!

@haentschman:

Könntest du bitte mein "Post - 11:05" Uhr auf der ersten Seite lesen ?
Hätte gerne eine Antwort darauf ob man nach der implementation private variablen deklarieren kann ? Wenn ja wie ?
.. eine Klasse kann man nicht über interface und implemetation verteilen/aufteilen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf