AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Speicher-Fehler beim create

Ein Thema von Ykcim · begonnen am 26. Apr 2018 · letzter Beitrag vom 4. Mai 2018
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#1

Speicher-Fehler beim create

  Alt 26. Apr 2018, 22:47
Hallo Zusammen,

ich versuche mich ganz vorsichtige an Scriptern. Ich habe jetzt folgende Unit geschrieben und frage mich, warum es kracht...
Delphi-Quellcode:
Unit TScripterUnit;
interface

uses Windows, Messages, SysUtils, Variants, Printers, Classes, Graphics,
      Controls, Forms, Dialogs, StdCtrls, ScrMemo, ScrmPS, atScript, atPascal,
      Vcl.ScripterInit;

Type
   TEvent = procedure(Sender: TObject) of object;
   TMyScripter=class
      strict protected
         FScript_Memo_Set: TatCustomScripter;
      private

      public
         constructor create;
         procedure Script_Memo_Ausbuchen_Set (Memo: TMemo; Pfad_SetFile: string);
   end;

var Script: TMyScripter;

implementation

constructor TMyScripter.create;
begin
   FScript_Memo_Set:=TatCustomScripter.Create(nil); //Hier kracht es
end;

procedure TMyScripter.Script_Memo_Ausbuchen_Set(Memo: TMemo; Pfad_SetFile: string);
var Code_Memo: TMemo;
begin
   Code_Memo:=TMemo.Create(nil);
   Code_Memo.Lines.LoadFromFile(Pfad_SetFile);
   FScript_Memo_Set.AddComponent(Memo);
   FScript_Memo_Set.SourceCode := Code_Memo.Lines;
   FScript_Memo_Set.Execute;
end;

initialization
  Script := TMyScripter.Create;

finalization
   if Script <> nil then begin
      Script.Free;
   end;
end.
Fehlermeldung: Erste Gelegenheit für Exception bei $004076E3. Exception-Klasse $C0000005 mit Meldung 'access violation at 0x004076e3: read of address 0xfffffff4'. Prozess iVisitor.exe (6560)
Hat jemand eine Idee, was ich gerade falsch mache?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:05
was passiert denn in TatCustomScripter.Create(nil);? vSchon mal mit dem Debugger durch gesteppt?
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:13
Das habe ich versucht: Haltepunkt eingefügt und dann mit F7 weitergegangen - der Fehler tritt sofort auf - beim ersten Mal F7 drücken...
Patrick
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#4

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:37
Wenn es in einer Zeile "kracht", muss nicht unbedingt diese eine Zeile dafür verantwortlich sein. Manchmal ist es die Zeile davor. Nur hat dieses Konstrukt aber nur eine Zeile. Warum nur eine?

Was passiert eigentlich wenn du davor inherited an die erste Stelle einfügst? Halte ich jetzt nicht für das Problem, sollte aber auf jeden Fall rein. Schon aus Prinzip.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:40
Da ich TMS nicht habe und mir auch in naher Zukunft sicher nicht zulegen will, kann ich dir jetzt nicht genau sagen, was da kracht. Aber es muss an dem Konstruktor, bzw. wahrscheinlich eher man Parameter liegen. Wie heißt das Parameter denn, und was wird damit im Konstruktor dann gemacht?
Dennis
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:43
Das hat leider keinen Effekt. Ich bekomme noch die Info, dass es eine ungültige Zeigeroperation.

Der Constructor bekommt später noch mehr Zeilen.

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#7

AW: Speicher-Fehler beim create

  Alt 26. Apr 2018, 23:57
Also ich würde in solchem Fall versuchen das Problem einzugrenzen, und vielleicht sowas schreiben

Delphi-Quellcode:
constructor TMyScripter.create;
begin
   inherited;
   FScript_Memo_Set:=nil;
   FScript_Memo_Set:=TatCustomScripter.Create(nil); //Hier kracht es
end;
Wenn er in nun in der Zeile davor hängen bleibt, ist das Problem vor dem Gleichzeichen, sonst dahinter. Nur eine Idee.

Und nur mal als Frage, welche Parameter erwartet TatCustomScripter.Create eigentlich? Kann man das ausnilen?

Geändert von Alallart (26. Apr 2018 um 23:59 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#8

AW: Speicher-Fehler beim create

  Alt 27. Apr 2018, 05:16
Hmm..

TatCustomScripter schein eine 'Custom' Komponente zu sein.
Vielleicht kann man den nicht direkt verwenden, wie z.B. auch TStrings nicht direkt verwendet werden kann, sondern eine davon abgeleitete Class wie TStringList..

Wenn TatCustomScripter eine visuelle Komponente ist, kann es auch sein, das diese einen Owner benötigt, welcher auch gleich als Parent eingetragen wird. Nur bei nil ist da halt keiner.

Anscheinend wird anschließend auf diesen zugegriffen und dann knallt es..

(Alles nur Vermutung, da ich die Kompos nicht habe...)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Speicher-Fehler beim create

  Alt 27. Apr 2018, 07:04
Versuche mal ohne diesen initialization/finalization-Horror sondern die globale Variable einfach bei einem Button-Klick oder sonst was zu befüllen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Speicher-Fehler beim create

  Alt 27. Apr 2018, 08:00
Ich vermute auch mal, dass das Problem der fehlende Owner ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:07 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