Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form close - EINvalidPointer (https://www.delphipraxis.net/200328-form-close-einvalidpointer.html)

haentschman 10. Apr 2019 10:29

AW: Form close - EINvalidPointer
 
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.

Int3g3r 10. Apr 2019 13:29

AW: Form close - EINvalidPointer
 
Endlich !! 8-)

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

Neutral General 10. Apr 2019 13:34

AW: Form close - EINvalidPointer
 
Zitat:

Zitat von Int3g3r (Beitrag 1429984)
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.

haentschman 10. Apr 2019 13:44

AW: Form close - EINvalidPointer
 
Moin...:P
Dann würde ich anstelle des Arrays eine
Delphi-Quellcode:
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 :zwinker:
[Meine Meinung]
Arrays sind aus der Zeit wo es noch keine generischen Listen gab. :stupid::P

Int3g3r 10. Apr 2019 13:54

AW: Form close - EINvalidPointer
 
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 ?

peterbelow 10. Apr 2019 13:56

AW: Form close - EINvalidPointer
 
Zitat:

Zitat von Int3g3r (Beitrag 1429984)
Endlich !! 8-)

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?

Int3g3r 10. Apr 2019 13:57

AW: Form close - EINvalidPointer
 
Zitat:

Zitat von peterbelow (Beitrag 1429989)
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}

peterbelow 10. Apr 2019 14:02

AW: Form close - EINvalidPointer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Int3g3r (Beitrag 1429990)
Zitat:

Zitat von peterbelow (Beitrag 1429989)
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.

Int3g3r 10. Apr 2019 14:06

AW: Form close - EINvalidPointer
 
Zitat:

Zitat von peterbelow (Beitrag 1429991)
Zitat:

Zitat von Int3g3r (Beitrag 1429990)
Zitat:

Zitat von peterbelow (Beitrag 1429989)
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 !

Klaus01 10. Apr 2019 14:18

AW: Form close - EINvalidPointer
 
Zitat:

Zitat von Int3g3r (Beitrag 1429988)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.
Seite 2 von 3     12 3      

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