Hi,
erstmal vorab: Ich wünsche euch allen eine frohe Weihnachtszeit!
Ich nutze gerade mal die Gelegenheit zwischen den Essen und Familienfeiern, auf die Nachricht hier zu antworten:
Das Problem habe ich verstanden. Nur da ich ja als Rückgabeparameter das Interface erhalte, sehe ich auch nur die Mehtoden, die es hat, nicht aber die der TMy_MSMQ-Klasse. Würde ich jetzt aber im ganzen Programm mit der TMY_MSMQ-Klasse arbeiten, so wäre ich wieder an dieses Objekt gebunden und der gewünschte Vorteil des Interfaces wäre nicht mehr gegeben. Ebenso, wenn ich das den Interface-Zeiger nach TMy_MSMQ caste. Ich muss da noch irgendwas falsch verstehen...
Ich wüsste also derzeit nicht, wo ich die Open-Methode deklarieren könnte, damit ich mit ihr arbeiten kann. Entweder darf ich mir kein Interface-Zeiger zurückgeben lassen, dann könnte ich eben mit der My_MSMQ.Open arbeiten, bin dann aber programmweit an sie gebunden. Oder ich nutze das Interface und habe eben diese Parameter-Probleme. So ist derzeit meine Sicht - ich weiß, da ist was falsch, aber ich komme nicht drauf was.
Oder gibt es für mein konkretes Vorhaben nicht diese Lösung, dass ich bei einem Provider-Wechsel nur eine Quelltextzeile austauschen muss?
Nochmal der Vollständigkeit halber - Dies ist mein letzter "Entwicklungs"-Stand:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
mq: IMy_MQ;
//Interface
begin
mq:=TMy_MSMQ.Create;
//Objekt vom Typ "TMy_MSMQ"
//Verbinden
mq.SetParam(IntToStr(MQ_RECEIVE_ACCESS));
//Notlösung
mq.SetParam(IntToStr(MQ_DENY_NONE));
//Hier auch ;)
if (mq.QueueOpen('
DIRECT=OS:.\Private$\Test'))
then
ShowMessage('
Queue opened');
end;
Danke und weiterhin noch schöne Feiertage!