AGB  ·  Datenschutz  ·  Impressum  







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

Rätselhafte Exceptions....?!

Ein Thema von Tommi · begonnen am 9. Feb 2004 · letzter Beitrag vom 9. Feb 2004
Antwort Antwort
Benutzerbild von Tommi
Tommi

Registriert seit: 23. Mai 2003
27 Beiträge
 
Delphi 3 Professional
 
#1

Rätselhafte Exceptions....?!

  Alt 9. Feb 2004, 10:21
Hallo Leute,

ich hätte da mal gerne ein Problem. Nein nicht wirklich, aber ich hab eins...
Ich programmier seit einem Monat in "Virtual Pascal" was recht Komplexes, was auch immer komplexer wurde und ich machte damit meinen ersten rightigen Gehversuche im Erstellen und Gebrauch von Klassen.
Alles funktionierte reibungslos, bis ich gestern nach Hinzufügen von ein paar unwesentlichen Zeilen Code permanent eine Exception an der selben Stelle erhalte. Es handelt sich um eine Zugriffsverletzung im Zusammenhang mit einem Objekt, das "linked lists" auf Basis von Records erstellt.
Nach etlichem Hin und Her, nach Ausprobieren in GNU Pascal (da gehts nicht, weil nicht mit Delphi kompatibel), Free Pascal und schlussendlich sogar in Delphi 3, hab ich festgestellt, daß diese Exception in erster Linie nur auf meinem Windows-XP-Rechner auftritt. Auf meinem älteren Toshiba-Notebook unter Windows 2000 _nicht_.

Allerdings geht auf diesem auch nicht alles reibungslos. Mir fällt deutlich auf, daß es mit den linked lists, die ich erstellt habe, ernste Probleme gibt. Irgendwie kommt da alles durcheinander und ich würde zu gerne wissen wie und warum.

Isoliert ausprobiert, klappen diese Linked-List-Klassen reibungslos. Aber das Gesamtprojekt ist ziemlich komplex geworden und irgendwo muß ja der Wurm drin sein.



Ich habe eine Vermutung:

Ich habe Klassen angelegt, die im Deklarationsteil (Private) weitere Klassen referenzieren und somit Objekte erzeugen (natürlich mit ordnungsgemäßen Aufruf des Constructors).
In einigen Quellcodes lese ich nun von Ableitungen. Sollte ich vielleicht besser den Code so umschreiben, daß ich alles über "inheritance" miteinander verknüpfe? Oder ist das Humbug, weil es eigentlich auch so funktionieren müßte?

Echt, ich bin total aufgeschmissen, weil ich gerne an der Sache weiterarbeiten möchte. Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Rätselhafte Exceptions....?!

  Alt 9. Feb 2004, 10:28
Also ohne ein bisschen von dem Code, der Dir die Probleme bereitet ist jede Spekulation aussichtslos

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Tommi
Tommi

Registriert seit: 23. Mai 2003
27 Beiträge
 
Delphi 3 Professional
 
#3

Re: Rätselhafte Exceptions....?!

  Alt 9. Feb 2004, 10:35
Hmm... wenn ich nur wüßte, welchen Teil vom Code ich posten soll

Ich schau mal nach...
  Mit Zitat antworten Zitat
Benutzerbild von Tommi
Tommi

Registriert seit: 23. Mai 2003
27 Beiträge
 
Delphi 3 Professional
 
#4

Re: Rätselhafte Exceptions....?!

  Alt 9. Feb 2004, 11:15
Okay, das sind Auszüge aus der Unit, die unter anderen linked list units, den Fehler verursacht.

Delphi-Quellcode:
Unit LanguageHandler;

INTERFACE

Uses SysUtils, TokenString;

Type

    pLDEntry = ^LDEntry;

    LDEntry = Record
            Index : LongInt;
            ID,
            Value,
            Reason : String;
            Next : pLDEntry;
    End;


    tLangDef = Class

             Private
                    Items : pLDEntry;
                    Counter : LongInt;

                    Tokens : tTokenString;

                    Procedure Parse ( FN, Language : String; Rookie : Boolean );
                    Procedure Add ( ID, Value, Reason : String );
                    Procedure Remove ( Idx : LongInt );

             Public
                   Error : Boolean;

                   Constructor Init;
                   Destructor Done;

                   Procedure Build ( Language : String; Rookie : Boolean );
                   Function Get ( ID : String ) : String;
                   Function GetByIndex ( Idx : LongInt ) : LDEntry;
                   Function IsReason ( ID : String ) : Boolean;
                   Function GetReason ( ID : String ) : String;

                   Procedure Flush;
                   Procedure Debug;
    End;

IMPLEMENTATION

...

Constructor tLangDef.Init;
Begin
     Counter := 0;
     Error := False;
     Tokens := tTokenString.Init;
     Items := Nil;
End;

Destructor tLangDef.Done;
Begin
     Flush;
     Tokens.Done;
End;


Procedure tLangDef.Add ( ID, Value, Reason : String );

Procedure AppendItem ( Var ItemList : pLDEntry; Item : pLDEntry );
Begin
     If ItemList = Nil Then ItemList := Item Else
     Begin
          If ItemList^.Next = Nil Then ItemList^.Next := Item
           Else AppendItem ( ItemList^.Next, Item );
     End;
End;

Var Item : pLDEntry;
Begin
     New ( Item );
     Item^.Index := Counter;
     Item^.ID := ID;
     Item^.Value := Value;
     Item^.Reason := Reason;
     Item^.Next := Nil;
     AppendItem ( Items, Item );
     Inc ( Counter );
End;


{
Bei folgender Funktion, wird durch das Statement "If ItemList <> Nil Then" die Exception verursacht.
}


Function tLangDef.Get ( ID : String ) : String;

Function SearchItem ( Var ItemList : pLDEntry; ID : String ) : String;
Begin
     If ItemList <> Nil Then
     Begin
          If ItemList^.ID = ID Then SearchItem := ItemList^.Value
           Else SearchItem := SearchItem ( ItemList^.Next, ID );
     End;
End;

Begin
     Get := SearchItem ( Items, UpperCase(ID) );
End;


.
.
.

Begin
End.
Ich nehm mal an, daß die Fehlersuche für euch unmöglich sein dürfte, weil ich ansonsten das gesamte Projekt hochladen müßte, es sei denn oben befindet sich was vollkommen Offensichtliches, was mir entgangen ist.
Nachdem ich das Projekt gerade auf Vermutungen hin umgeschrieben habe, befindet sich die Exception nun im Laufzeit-Code, der von Virtual Pascal generiert wird. Es hängt nun mit der Speicher-Allokierung zusammen.
Okay... ich bin so richtig schön ratlos.


[edit=FuckRacism][delphi] Syntax Mfg, FuckRacism[/edit]
  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 07:30 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