AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Interfaces

Ein Thema von hoika · begonnen am 2. Aug 2006 · letzter Beitrag vom 3. Aug 2006
 
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

Problem mit Interfaces

  Alt 2. Aug 2006, 18:02
Hallo,

ich verzweifle gerade an Interfaces.

Das Problem ist die Stelle // XXX //
Danach wird der Speicher der lokalen Varaible TestId überschrieben.

Ich denke, der Fehler liegt im GetInterface.
Nur wie soll ich denn sonst ein Interface auf die Klasse bekommen ???.


Unteres Bsp führt zum Überschreiben der lokalen Variabel TestCode.
Was mache ich falsch ?

Ich will von dieser Basisklasse weg,
also bitte keine "pack das property doch in die Basisklasse"

Danke
Heiko

Delphi-Quellcode:
type
  IResource = interface
    function GetResType: Integer;

    property iResType: Integer
      read GetResType
  end;

type
  TBaseRes = class(TInterfacedClass)
    function GetInterface: IResource; virtual; abstract;
  end;

// Res1

type
  TRes1 = class(TBaseRes, IRes)
    function GetInterface: IResource; override;
    function GetResType: Integer;
  end;

function TRes1.GetInterface: IResource;
var
  IntRes: IResource;
begin
  IntRes:= Self;
  Result:= IntRes;
end;

function TRes1.GetResType: Integer;
begin
  Result:= 1;
end;

// Res2

type
  TRes2 = class(TBaseRes, IRes)
    function GetInterface: IResource; override;
    function GetResType: Integer;
  end;

function TRes2.GetInterface: IResource;
var
  IntRes: IResource;
begin
  IntRes:= Self;
  Result:= IntRes;
end;

function TRes2.GetResType: Integer;
begin
  Result:= 2;
end;

// problem code

var
  iResItem : Integer;
  ResItem : TBaseRes;
  IntRes : IResource;
  TestId : Integer;
begin
  TestId:= 100;

  for iResItem:= 0 to ResList.Count-1 do
  begin
    ResItem:= ResList[iResItem];

    IntRes:= ResItem.GetInterface;


  // XXX //
    if IntRes.iResType=1 do
    begin
      blaaa


   // TestId wurde verändert !!
  end;
Heiko
  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 16:52 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-2025 by Thomas Breitkreuz