In MQL5 gibt es immer Raum für einen Exploit! ;) - Seite 7

 
o_O:
kannmemcpy verwendet werden?
 
Комбинатор:
kann memcpy verwendet werden?

nein )

Sie sehen, wenn Sie einige Vorbereitungen treffen müssen, bevor Sie SendParam aufrufen, ist es einfacher, int in eine CInt-Klasse zu packen.

 
o_O:

Es gibt keine native Möglichkeit, einen Zeiger zu nehmen. Ich meine, wenn Sie den CInt-Wrapper nicht von Anfang an verwenden, werden Sie es schwer haben, mit Zeigern umzugehen.

Der Vorteil ist, dass Sie auch kochen.


void f(int* value)
{
   //do something
}

{
   int x = 5;
   f(&x);
}

Die Aufnahme einer Adresse ist eine Vorbereitung. Stattdessen wird es sein

f(GetPtr(x)) und Sie müssen den Typ übergeben

 
o_O:

Angenommen, es gibt eine Funktion in einer Klasse

SendParam(int type, void* param)

in dem der Typ des Parameters (type) und der Parameter selbst bzw. ein Zeiger auf ihn (void*) übergeben werden.

Der Parameter kann von beliebigem Typ sein (Klasse oder einfacher Typ).

Der Parameter kann von beliebigem Typ sein (eine Klasse oder ein einfacher Typ).

wo liegt das Problem, im rechtlichen Nichts:
template<typenname T>
void SendReceiveParam(T& param);
....
{
double dval = 10;
SendReceiveParam(dval);
int ival = 10;
SendenEmpfangenParam(ival)
...
// Verweis auf das Strukturobjekt
struct AAA { void operator=(int a) {} };
AAA struct_val;
SendReceiveParam(struct_val);
}

eine illegale über int-Zeiger schreiben?
 
Ich verstehe die Problemstellung immer noch nicht. Offensichtlich gibt es keine klare Aussage darüber, was Sie erreichen wollen, auch nicht im Beispiel.
 
fxsaber:
Ich verstehe immer noch nicht, wie das Problem entstanden ist. Offensichtlich gibt es keine klare Formulierung dessen, was wir erreichen wollen, auch nicht im Beispiel.

Ich habe bereits zweimal geschrieben, dass wir versuchen, einen Zeiger auf int in void* Parameter zu übergeben.

( Die Optionen memcpy und Zwischenklasse wurden bereits vorgeschlagen, ich brauche sie nicht zu wiederholen).

 
o_O:

Ich habe bereits zweimal geschrieben, dass wir versuchen, einen Zeiger auf int in void* Parameter zu übergeben.

(memcpy, Zwischenklassen-Optionen wurden bereits vorgeschlagen, sie müssen nicht wiederholt werden)

Verdammt, zumindest in C-Syntax können Sie mir ein Beispiel für Code, der in MQL auch funktionieren sollte?
 
alexsis78:
wo liegt das Problem, im rechtlichen Nichts:
template<typenname T>
void SendReceiveParam(T& param);

schön, aber es passt nicht.

es kann nicht NULL übergeben

 
fxsaber:
Shit, zumindest in C-Syntax können wir ein Beispiel-Code, der in MQL als auch funktionieren sollte haben?
void SendParam(void* );

int a=10;
SendParam(&a);
SendParam(NULL);
 
o_O:
void SendParam(void* );

int a=10;
SendParam(&a);
SendParam(NULL);
Danke für das Beispiel! Aber ich habe den Zweck der Nutzung nicht verstanden - Bequemlichkeit. Bitte fügen Sie ein weiteres Stück von SendParam hinzu, um zu sehen, wie ein Zeiger auf int, zum Beispiel, verwendet werden will.
o_O:

schön, aber es passt nicht.

Was genau ist schön? Es scheint sich um eine direkte Anwendung von Vorlagen zu handeln. Oder übersehe ich vielleicht etwas?