AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Leidiges EAccessViolation bei dynamischer TabSheet-Erzeugun
Thema durchsuchen
Ansicht
Themen-Optionen

Leidiges EAccessViolation bei dynamischer TabSheet-Erzeugun

Ein Thema von triangulum · begonnen am 14. Dez 2006 · letzter Beitrag vom 14. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#1

Leidiges EAccessViolation bei dynamischer TabSheet-Erzeugun

  Alt 14. Dez 2006, 10:30
Salü,

folgender Code

Delphi-Quellcode:
SetLength(TabSheetCCDiagramsArray, CD.nTemp);
SetLength(FrameCCDiagramArray, CD.nTemp);

// create and setup diagrams
For j:=0 To Pred(CD.nTemp) Do Begin
    // 1. create, setup tab sheet
    TabSheetCCDiagramsArray[j] := TTabSheet.Create(self);
    TabSheetCCDiagramsArray[j].PageControl := PageControlCCDiagrams;
    TabSheetCCDiagramsArray[j].Caption := CD.TempStr(j);
    TabSheetCCDiagramsArray[j].Name := 'TabSheet'+IntToStr(j);

     [...]
Es geht also um dynamische TabSheet Erzeugung, in Abhängigkeit des Wertes von nTemp.
PageControl ist ein normales Formularelement des Frames, in dem diese Prozedur stattfindet.

Er wirft ein EAccessViolation Error. Ihm gefällt die Zuweisung des PageControlCCDiagrams als Parent für den TabSheet nicht. Woran könnte das liegen?
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 11:51
Wo tritt der Fehler auf?
Markus Kinzler
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#3

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:15
Er markiert diese Zeile

TabSheetCCDiagramsArray[j].PageControl := PageControlCCDiagrams; als Fehlerursache. Wenn ich sie auskommentiere, tritt der Fehler nicht auf.
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#4

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:25
Zitat von triangulum:
Er wirft ein EAccessViolation Error. Ihm gefällt die Zuweisung des PageControlCCDiagrams als Parent für den TabSheet nicht. Woran könnte das liegen?
Vielleicht daran, dass du den Parent gar nicht zuweist?
Mach mal vor der Zugeisung des PageControl noch folgendes:
TabSheetCCDiagramsArray[j].Parent := PageControlCCDiagrams;
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#5

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:38
Tat ich... jetzt frißt er ebendiese Zeile nicht:

 TabSheetCCDiagramsArray[j].Parent := PageControlCCDiagrams;
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:41
An welcher Adresse kommt die AV? Ist es auch wirklich genau der Quellcode den du da gepostet hast? Könntest du eventuell die ganze Funktion posten?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#7

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:46
Zitat:
Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 0047E4CE in Modul 'soundso.exe'. Lesen von Adresse 00000268'. Prozess soundso.exe (3916)
. Soweit die IDE

Die Funktion:

Delphi-Quellcode:
Procedure TFrameCCDiagrams.AddTabSheets;
Var j:Integer;
Begin
  // destroy greeting message; overlapped by diagrams
  { // dec. 14
  objectExists := (LabelNoDataLoaded is TLabel);
  if objectExists then LabelNoDataLoaded.Free;
   }

   
  // setup array lengths, depending on no. of diff't temperatures
  SetLength(TabSheetCCDiagramsArray, CD.nTemp);
  SetLength(FrameCCDiagramArray, CD.nTemp);

 // create and setup diagrams
 For j:=0 To Pred(CD.nTemp) Do Begin
     // 1. create, setup tab sheet
     TabSheetCCDiagramsArray[j] := TTabSheet.Create(self);
     TabSheetCCDiagramsArray[j].Parent := PageControlCCDiagrams;
     TabSheetCCDiagramsArray[j].PageControl := PageControlCCDiagrams;
     TabSheetCCDiagramsArray[j].Caption := CD.TempStr(j);
     TabSheetCCDiagramsArray[j].Name := 'TabSheet'+IntToStr(j);

     // 2. create, setup CC container frame
     FrameCCDiagramArray[j] := TFrameCCDiagram.Create(Self);
     FrameCCDiagramArray[j].Parent := TabSheetCCDiagramsArray[j];
     FrameCCDiagramArray[j].Name := 'CCFrame'+IntToStr(j);
     FrameCCDiagramArray[j].Top := 10;
     FrameCCDiagramArray[j].Left := 10;
     FrameCCDiagramArray[j].Height := TabSheetCCDiagramsArray[j].Height-5;
     FrameCCDiagramArray[j].Width := TabSheetCCDiagramsArray[j].Width -20;
     FrameCCDiagramArray[j].TIndex := j;

     // 3. create and setup diagrams within diagram container frames
     FrameCCDiagramArray[j].CreateDiagram;
     ShowData(j); // immer zuerst logarithmisch darstellen
     FrameCCDiagramArray[j].CCDiagram.AutoMinMax;

     FrameCCDiagramArray[j].CCDiagram.GF3 := False;
     FrameCCDiagramArray[j].CCDiagram.EpmLocked := False;
     FrameCCDiagramArray[j].CCDiagram.F1mLocked := False;
     FrameCCDiagramArray[j].CCDiagram.ValidResults := False;

     FrameCCDiagramArray[j].CCDiagram.Busy := False;
     FrameCCDiagramArray[j].CCDiagram.Abort := False;


 End;
End;
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 12:48
Dann würde ich doch mal spontan tippen das PageControlCCDiagrams zum Zeitpunkt der Zuweisung = nil ist
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#9

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 13:00
Der scheint tatsächlich nil zu sein, zumindest versagt er bei
writeln(PageControlCCDiagrams.Name); Links in der IDE schreibt er für das ganze 'self' ebenfalls nil , und für alle Objekte den Wert ^nicht verfügbarer Wert. . Für den Schleifenzähler j schreibt er 0.
Multa narrare possum, sed longum est ....
  Mit Zitat antworten Zitat
triangulum

Registriert seit: 21. Jul 2006
39 Beiträge
 
Delphi 7 Professional
 
#10

Re: Leidiges EAccessViolation bei dynamischer TabSheet-Erze

  Alt 14. Dez 2006, 13:31
Dieser Fehler wurde jetzt behoben. Es musste einfach eine "createte" Instanz vom Frame, das diese Funktion beherbergt, benutzt werden.

Die Jagd geht aber weiter ... diesmal nach einem EInvalidPointer
Multa narrare possum, sed longum est ....
  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 09:12 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