AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation
Thema durchsuchen
Ansicht
Themen-Optionen

Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

Ein Thema von FragenderHerbert · begonnen am 16. Feb 2014 · letzter Beitrag vom 17. Feb 2014
Antwort Antwort
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 08:10
Sir Rufo, damit solltest Du öffentlich auftreten
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 11:00
Ich mag anschauliche Erklärungen. *schnell mal nachschauen, ob mein Auto noch draußen steht*
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
FragenderHerbert

Registriert seit: 4. Dez 2013
47 Beiträge
 
#3

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 19:00
Ok, dake soweit. Da liegt wohl mein Denkfehler darn, das ich, um bei der Analogie zu bleiben, mit
 CmdLine.AddCmd(CmdTool); mein Auto namens CmdTool schon in der Grage hatte. Ich hab geglaubt, die Lokale Variable CmdTool sei nur ein Platzhalter, der Autoransporter in der Analogie. Der könnte ja ein weiteres Auto holen und in die Garage stellen, wider mit hier CmdLine.AddCmd(Cmdtool);

Wie htte ich das dann anders schreiben müssen, damit meine lokale Variable wirklich nur dieser Autotransporter ist?

(Jetzt will ich das genau wissen, damit so ein Fehler nicht wieder passiert)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.041 Beiträge
 
Delphi 12 Athens
 
#4

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 21:51
Da du das Objekt danach noch benötigst, kannst du es an der Stelle gar nicht zerstören. Am einfachsten kannst du daher gleich das schreiben:
Delphi-Quellcode:
function RegisterCommandLineTool(const AName, ACommand: String; const AOptions: String = ''; const ACfgFile: String = '';
  AOptionsFactory: TOptionsFactory = nil): TCmdTool;
begin
  Result := TCmdTool.Create(AName, ACommand, AOptions, ACfgFile);
  Result.Factory := AOptionsFactory;
  CmdLines.AddCmdTool(Result);
end;
Und CmdLines würde ich mit dem Parameter True an den Konstruktor erzeugen, damit die darin gespeicherten Objekte beim Freigeben der Liste mit freigegeben werden:
Delphi-Quellcode:
initialization
  CmdLines := TCmdTools.Create(True);
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 21:54
Der Punkt ist, es wird niemals eine Instanz transportiert.

Eine Variable zeigt nur auf den Ort, wo sich die Instanz befindet (Referenz auf die Speicherstelle).
Stell dir das als Zettel vor, wo du dir eine Adresse merkst. Diesen Zettel kannst du kopieren und weitergeben, die Instanz wird dadurch nicht mehr (Visitenkarten fangen auch nicht an mich zu klonen, wenn ich nur genug davon verteile).

Wird die Instanz zerstört, dann wird der Speicherbereich freigegeben, den die Instanz belegt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Unerklärliche EAccessViolation -> Meldung Invalid Pointer Operation

  Alt 17. Feb 2014, 22:11
Und wenn ich den vor mir erschieße (Free aufrufe), dann ist die Instanz weg, aber auf den Visitenkarten steht immernoch dessen Adresse.
Da kannst du die Visitenkarte noch so oft kopieren ... er kommt nicht mehr zurück.
Ein Therapeut entspricht 1024 Gigapeut.
  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 22:01 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