AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fehler: Variable "self" inaccessible due to optimization
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Variable "self" inaccessible due to optimization

Ein Thema von Pellekaeptn · begonnen am 22. Dez 2008 · letzter Beitrag vom 30. Dez 2008
 
Pellekaeptn

Registriert seit: 14. Dez 2008
3 Beiträge
 
#1

Fehler: Variable "self" inaccessible due to optimi

  Alt 22. Dez 2008, 17:25
Hallo alle zusammen!

Ich schreib grad mein Infoprojekt mit Delphi 7 und bin am verzweifeln. Ich bin auch nicht so bewandert im Programmieren (aber es macht mir Spaß ), außer in der Schule mach ich da nichts, also entschuldige ich mich jetzt schonmal im Voraus für meine blöden Fragen...

Ein Modul meines Programms ist eine Unit "Keller" (also ein Stack). Leider funktioniert die bei mir gar nicht.
Hier erstmal der Quelltext Push-Funktion:

Delphi-Quellcode:
unit Keller;

interface
type
  ZElement = ^TElement;
  TElement = record
    Daten: string;
    Voriges, Naechstes: ZElement;
  end;

  TKeller = class(TObject)
    public
      constructor Create();
      procedure Push(eintrag: string);
      function Pop(): ZElement;
    private
      Erstes: ZElement;
  end;


implementation

constructor TKeller.Create();
begin
  inherited;
  Erstes := nil;
end;


procedure TKeller.Push(eintrag: string);
var
  X,Y: ZElement; Letztes: ZElement; Element:TElement;
begin
  NEW(X);
  NEW(Y);
  Element.daten:=eintrag;
  Element.Naechstes:=X;
  Element.Voriges:=Y;
  if (Erstes <> nil) then
  begin
    Letztes := Erstes;
    while (Letztes^.Naechstes <> nil) do
      Letztes := Letztes^.Naechstes;
    Letztes^.Naechstes := @Element;
    Element.Naechstes := nil;
    Element.Voriges := Letztes;
  end else
  begin
    Erstes := @Element; //hier ist Element noch zb. ('bla',#ECF45G,#ECF45H)
    Element.Naechstes := nil; //hier auch (außer das neue nil)
    Element.Voriges := nil; //hier auch (außer das neue nil)
  end; //hier ist Element jetzt ('',nil,nil)
end;
Er zeigt keine Fehler mehr an oder so, ein Test-Programm läuft auch, aber spätestens bei der Pop-funktion gibts Ärger.
Ich hab dann mal mit F7 durchgeschaltet und hab ne Watchlist gemacht und bin zu folgender interessanter Sache gekommen: schon beim ersten push (also wenn erstes noch nil ist) passiert etwas Seltsames: wenn man bei "Erstes := @Element;" steht Element noch auf ('eingegebener string, adresse, adresse). Wenn er aber die nächsten 2 Zeilen durchlaufen hat und die beiden Adressen nil sind, hat sich plötzlich auch Element.daten verändert: von einer Zeile zur anderen ist Element plötzlich ('',nil,nil).
Außerdem stand bei der Watchlist auch einmal "Variable "Self" inaccessible here due to optimization". Ich hab doch gar keine Variable Self???

Die Delphi-Hilfe und Forum-Suche haben mir leider gar nicht weitergeholfen, aber schonmal vielen Dank für eure Mühe und Entschuldigung für die dämlichen Fragen und alles

Viele Grüße und einen schönen Abend noch
der Pellekaeptn
  Mit Zitat antworten Zitat
 


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:34 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 by Thomas Breitkreuz