Seite 1 von 1
das leidige Problem C++ nach PB
Verfasst: 25.09.2007 20:15
von nicolaus
Hi,
Brauch mal wieder hilfe beim konvertieren von C++ nach PB.
Es geht um diese Zeile aus C++
Wie muß die in PB aussehen?
Ich versuche es so doch scheint das nicht richtig zu sein
Danke schon mal
Verfasst: 25.09.2007 20:45
von edel
Verfasst: 25.09.2007 21:03
von #NULL
[ich kenn mich nicht wirklich aus in c++, also spekulier ich mal..]
da der &-operator verwendet wird, ist pObjData da nicht gar kein pointer, sondern eine schlichte variable?
also vielleicht eher so:
und was ist mit dem type-cast? scheinbar ist das structur-feld gar nicht vom selben typ wie der pointer.
Verfasst: 25.09.2007 21:06
von Green Snake
Ein Pointer ist eine Variable^^
Edit: cutted
Verfasst: 25.09.2007 21:10
von edel
#NULL hat geschrieben:und was ist mit dem type-cast? scheinbar ist das structur-feld gar nicht vom selben typ wie der pointer.
Das ist PB egal, PB macht das "automatisch".
Und es handelt sich bei pObjData sehr wohl um ein
Zeiger, sonst wuerde dort ein '.' stehen und nicht '->'.
Verfasst: 25.09.2007 21:15
von #NULL
das -> wird ja benötigt, eben weil kurz vorher pObjData dereferenziert wurde.
<edit>
wieder mist, -> hat ja höherer priorität. hast wohl recht
Verfasst: 25.09.2007 22:45
von nicolaus
Ok ích danke euch erstmal für die Hilfe.
Da ich leider noch immer nicht weiter komme werd ich mal die relevanten sachen des C++ codes posten denn es gibt noch ne stelle die ich nit nach PB umgesetzt bekomme.
Code: Alles auswählen
struct Struct1
{
char title[256];
double kohlsmann;
double altitude;
double latitude;
double longitude;
};
....
....
case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE:
{
SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
switch(pObjData->dwRequestID)
{
case REQUEST_1:
{
DWORD ObjectID = pObjData->dwObjectID;
Struct1 *pS = (Struct1*)&pObjData->dwData;
if (SUCCEEDED(StringCbLengthA(&pS->title[0], sizeof(pS->title), NULL))) // security check
{
printf("\nObjectID=%d Title=\"%s\"\nLat=%f Lon=%f Alt=%f Kohlsman=%.2f", ObjectID, pS->title, pS->latitude, pS->longitude, pS->altitude, pS->kohlsmann );
}
break;
}
default:
break;
}
break;
}
Wie muß den die Struct1 in PB aussehen und dann auch der teil aus dem C++ code
Danke euch schon mal.
Nico
Verfasst: 26.09.2007 00:11
von mk-soft
Fehlen noch viele Struktur Informationen.
Aber die richtung müste stimmen
Code: Alles auswählen
; struct Struct1
; {
; char title[256];
; double kohlsmann;
; double altitude;
; double latitude;
; double longitude;
; };
Structure Struct1
title.s{256} ; String fester länge
kohlsmann.d
altitude.d
latitude.s
longitude.d
EndStructure
Structure SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE ; ? Interface
;?
dwRequestID.l
*dwData.l ;?
;?
EndStructure
; ....
; ....
;
; Case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE:
; {
; SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
*pObjData.SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE = pData;
Select pObjData\dwRequestID
;{
Case REQUEST_1:
;{
;DWORD ObjectID = pObjData->dwObjectID;
ObjectID = *pObjData\dwObjectID;
;Struct1 *pS = (Struct1*)&pObjData->dwData;
*pS.struct1 = *pObjData\dwData;
; If (SUCCEEDED(StringCbLengthA(&pS->title[0], SizeOf(pS->title), NULL))) // security check
; {
; printf("\nObjectID=%d Title=\"%s\"\nLat=%f Lon=%f Alt=%f Kohlsman=%.2f", ObjectID, pS->title, pS->latitude, pS->longitude, pS->altitude, pS->kohlsmann );
; }
Break;
;}
Default;
Break;
EndSelect;}
Break;
}