Für allgemeine Fragen zur Programmierung mit PureBasic.
nicolaus
Moderator
Beiträge: 1175 Registriert: 11.09.2004 13:09
Kontaktdaten:
Beitrag
von nicolaus » 25.09.2007 20:15
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
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 25.09.2007 20:45
#NULL
Beiträge: 2237 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 25.09.2007 21:03
[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.
edel
Beiträge: 3667 Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:
Beitrag
von edel » 25.09.2007 21:10
#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 '->'.
#NULL
Beiträge: 2237 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 25.09.2007 21:15
das -> wird ja benötigt, eben weil kurz vorher pObjData dereferenziert wurde.
<edit>
wieder mist, -> hat ja höherer priorität. hast wohl recht
nicolaus
Moderator
Beiträge: 1175 Registriert: 11.09.2004 13:09
Kontaktdaten:
Beitrag
von nicolaus » 25.09.2007 22:45
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
mk-soft
Beiträge: 3845 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 26.09.2007 00:11
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;
}