Thema: Delphi ClassName ist falsch

Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: ClassName ist falsch

  Alt 13. Jun 2009, 11:47
Zitat von himitsu:
die Klasse wurde als TBuchZeile erzeugt und ClassName geht über den internen Klassenzeiger und ließt darüber den Namen aus ... also immer den Namen der Klasse, über welche die Instanz erzeugt wurde..
Naja ich hätte TExemplarZeile aber erwartet

Also wenn ich folgende Funktion habe:
Delphi-Quellcode:
type
  <Erste Klasse> = class
    function MyName : string;
  end;
  <Klasse> = class(<Erste Klasse>)
    procedure Machwas;
  end;
  <Andere Klasse> = class(<Erste Klasse>)
    procedure Machwasanderes;
  end;

procedure <Andere Klasse>.Machwasanderes;
begin
  Showmessage('Bye World');
end;

procedure <Klasse>.Machwas;
  Showmessage(MyName);
end;

function <Erste Klasse>.MyName : string;
begin
  Result := Classname;
end;
Dann erwarte ich dass in Classname <Klasse> steht und nicht <Andere Klasse>, aber er kann Machwas aufrufen, weil er gecastet wurde

Aber das ist nicht mein Problem, sondern eher, wo ich einen falschen harten Cast mache

Zitat von mkinzler:
Ein harter Cast überprüft den typ nicht, sondern interpretiert den Speicherbereich.
Nagut okay das könnte zufällig also klappen?

Zitat von mkinzler:
Aber ich verstehe nicht, was du mit diesem Code vorhast.
Mit welchem Code genau? UZeilen.pas? Damit beschreibe ich die Daten die nachher in mehreren VSTs stehen. Und zwar lade ich damit quasi die komplette Datenbank in den RAM was zum einem schneller ist und zum anderen auch direkte Verknüpfungen erlaubt. Also um zum Beispiel den Fachnamen eines Exemplars zu ermitteln muss man nicht folgende Kette aufrufen:
  • BuchID zur ExemplarID
  • FachID zur BuchID
  • Fachname zur FachID
Sondern kann einfach folgendes sagen:
Fachname := MeinExemplar.Buch.Fach.Name; Mit PruefeZugriff, will ich verhindern, dass ein Objekt welches als Dummy markiert wurde, auf Eigenschaften zugreift (bis auf die ID). Und zwar habe ich beim Laden der Listen das Problem, dass ich zum Beispiel die BuchID eines Exemplares kenne, aber nicht zwingend das Buch zu dieser ID. Zum einen kennen die Exemplare ja nicht alle Bücher (bis auf die Bücher die auch Exemplare haben) und zum anderen könnten die Bücher ja später geladen werden. Deshalb erstelle ich einen Dummy oder Platzhalter in den nur die ID des Buches steht. Dadurch kann ich später sagen, welches Buch dahinter steckt. Da aber bis auf die ID keine Werte gesetzt sind, darf man darauf nicht zugreifen. Erst mit "VerknüpfeListen" wird das Problem behoben!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat