Com-Objekt "per referenz" übergeben
Moderator: Moderatoren
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Com-Objekt "per referenz" übergeben
Hallo,
ich möchte ein COM-Objekt an ein zweites per Referenz übergeben.
Geht das mit Xbase? Oderot4xb?
Was muss ich nach:
_dh_CreateObject(L("HXX.ApplicationObject"),0,@xlApp)
tun damit das zum Active-X Objekt wird.
Habe leider nichts gefunden wie ich "dynamiccast" hier verwenden kann...
Gruß Stefan
ich möchte ein COM-Objekt an ein zweites per Referenz übergeben.
Geht das mit Xbase? Oderot4xb?
Was muss ich nach:
_dh_CreateObject(L("HXX.ApplicationObject"),0,@xlApp)
tun damit das zum Active-X Objekt wird.
Habe leider nichts gefunden wie ich "dynamiccast" hier verwenden kann...
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Com-Objekt "per referenz" übergeben
leider wirst du auch mit DynamicCast nicht weiterkommen ... es steht bei Pablo auf der "todo" Liste.mini990 hat geschrieben:Was muss ich nach:
_dh_CreateObject(L("HXX.ApplicationObject"),0,@xlApp)
tun damit das zum Active-X Objekt wird.
Habe leider nichts gefunden wie ich "dynamiccast" hier verwenden kann...
p.s. das letzte was ich versucht habe waren 2 Threads wobei ich DispHPR.DLL immer dann verwendet habe wenn es "lange dauert" und kein Event vor Abschluss zu erwarten ist.ot4xb.public
Re: DispHPR / ot4xb
Start 01.10.2015
Was planned to provide a sink helper object inside ot4xb,not a priority but as not so much complex will try to include in the next ot4xb release
If you have not planned to run your objects on a separate thread AutomationObject():Create( pInterface ) probably still the easy solution
Depending on your thread model may happen that after you create your own sink object still having same delay receiving COM events that with the Xbase++ AX implementation, and this is because AppEvent() not in alertable state all the time but intermitent
gruss by OHR
Jimmy
Jimmy
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Com-Objekt "per referenz" übergeben
Hallo nochmal,
ich komme an dieser Stelle einfach nicht weiter.....
Programmbeispiel:
Hier mein umgesetzter Code:
Das Problem stellt die Funktion getmedicament dar.
Das Objekt "Med" wird als "[ref]$med" übergeben.
bedeutet doch dass ich das Objekt oMed "per Referenz" übergeben muss.
Wie kann ich diese Referenz erzeugen?
Gruß Stefan
ich komme an dieser Stelle einfach nicht weiter.....
Programmbeispiel:
Code: Alles auswählen
$appobj = new-object -comobject praxisCENTER3.ApplicationObject
$med = new-object -comobject praxisCENTER3.Medicament
foreach ($presMed in $prescription)
{
# $presMed.PIC
$appobj.GetMedicament($presMed.PIC,[ref]$med)
# Ausgabe der Eigenschaften in der Console
$med.PIC
$med.narcoticaddition
$med.Homeopathic
}
#$prescription.Count
#$presMed = $prescription.Item(0)
#$presMed.PIC
$appobj.Hide()
$appobj.Close()
Code: Alles auswählen
oIfap := CreateObject("PraxisCENTER3.ApplicationObject")
oMed := CreateObject("PraxisCENTER3.Medicament")
oMed := oMed:dynamicCast ( ActiveXObject() )
for i:=0 to oPat:Prescription:Count-1
oIfap:GetMedicament(cPZN, omed)
next i
Das Objekt "Med" wird als "[ref]$med" übergeben.
bedeutet doch dass ich das Objekt oMed "per Referenz" übergeben muss.
Wie kann ich diese Referenz erzeugen?
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Com-Objekt "per referenz" übergeben
hi,
ein COM Object muss nicht, wie eine Xbase++ Class, Propertys (Eigenschaften) haben sondern könnte auch eine STRUCTURE sein ( ähnlich einer DBF ).
ein DynamicCast() wendet man üblicherweise auf ein COM Object (CreateObject) an um Events zu empfangen.
da nun eine FOREACH vorliegt "könnte" man ComEvalCollection() versuchen wobei im Codeblock die Auswertung geschieht.
wenn du eine FOR / NEXT verwendest dann musst du auch den "Zähler" mitführen welches auf die einzelnen Items zugreift.
wenn es eine STRUCTURE ist müsstest du mit GwstArrayNext(oCOM) zum nächsten "Satz skippen"
was mit hier fehlt ist $prescription ... wo kommt das her ?
p.s. wenn du ein VB Sample findest ... das ich "leichter" nach Xbase++ zu "übersetzen"
ein COM Object muss nicht, wie eine Xbase++ Class, Propertys (Eigenschaften) haben sondern könnte auch eine STRUCTURE sein ( ähnlich einer DBF ).
ein DynamicCast() wendet man üblicherweise auf ein COM Object (CreateObject) an um Events zu empfangen.
da nun eine FOREACH vorliegt "könnte" man ComEvalCollection() versuchen wobei im Codeblock die Auswertung geschieht.
wenn du eine FOR / NEXT verwendest dann musst du auch den "Zähler" mitführen welches auf die einzelnen Items zugreift.
wenn es eine STRUCTURE ist müsstest du mit GwstArrayNext(oCOM) zum nächsten "Satz skippen"
Code: Alles auswählen
//
// now we use TBBUTTON Structure fill Structure Member
// and use GwstArrayNext(oBtn) to go to the next item
//
oBtn := TBBUTTON():New()
pBtnArray := _xgrab( oBtn:_sizeof_() * button_count )
oBtn:_link_( pBtnArray , .F. ) // link to the first item
nNo := 1
for nNo := 1 to button_count
// .....assign member values
GwstArrayNext( oBtn) // go to the next item
next
Code: Alles auswählen
#$prescription.Count
#$presMed = $prescription.Item(0)
gruss by OHR
Jimmy
Jimmy
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Com-Objekt "per referenz" übergeben
Hallo Jimmy,
die For-Next Schleife funktioniert.
prescription ist eine Liste. Auch das funktioniert.
Mein Problem ist genau das: $appobj.GetMedicament($presMed.PIC,[ref]$med)
Das farbig markierte......
Gruß Stefan
die For-Next Schleife funktioniert.
prescription ist eine Liste. Auch das funktioniert.
Mein Problem ist genau das: $appobj.GetMedicament($presMed.PIC,[ref]$med)
Das farbig markierte......
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Com-Objekt "per referenz" übergeben
wir hatten die Diskussion schon vor 1 Jahr ... http://www.xbaseforum.de/viewtopic.php?f=28&t=7899
hattest duausprobiert ?
Code: Alles auswählen
Function GetMedicament (Value: WideString, var Medicament: IMedicament): Integer;
Code: Alles auswählen
oifap:GetMedicament(nPZN, oMed:interface)
gruss by OHR
Jimmy
Jimmy