| |
|
|
Ernst | warum meckert XPSE bei der Funktion sizeof in einer nproc ( Warnung: undeklarierte Funktion : SIZEOF ) auch {$pushkeyword sizeof} hilft nicht |
|
|
| |
|
|
|
E.T. | An welcher Stelle im Quelltext steht denn das {$pushkeyword sizeof} ?? |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 05.05.2014 ▲ |
|
|
|
|
Ernst | als Kompilerschalter am Anfang
{$iq} {pushkeyword sizeof}
bzw.
{pushkeyword sizeof} {$iq}
beides versucht - Ergebnis gleich ---------- anschließend kommen gleich noch zwei Fragen betreffend Drawtext und Strukturen...
bei dem Versuch die API ~DRAWTEXT zu verwenden, gibt es aufgrund der xpse-eigenen Funktion die Warnung: Funktion DRAWTEXT erwartet bei Parameter 4. Funktion: WNDPROC Abhilfe: STR kann man die API-Funktion irgendwie reindrücken oder kann man nur auf Umwegen zum Ziel (Textausrichtung , etc.) kommen ?
zum zweiten, z.B. Paintstruct: egal wie ich versuche die Struktur reinzubekommen ist die Meldung da Warnung: "PAINTRUCT" : Kollision mit Struktur (PAINTSTRUCT) wenn xpse die verschiedenen Strukturen schon kennt, wie verwende ich sie dann richtig ? Grüße |
|
|
| |
|
|
|
Nico Madysa | Ernst (05.05.14)
warum meckert XPSE bei der Funktion sizeof in einer nproc ( Warnung: undeklarierte Funktion : SIZEOF ) auch {$pushkeyword sizeof} hilft nicht
Innerhalb von NProcs darfst du nur selbst definierte Funktionen verwenden und solche, die von XPSE für NProcs bereit gestellt werden. Du darfst nicht davon ausgehen, dass alle XProfan-Funktionen innerhalb von NProcs wie gewohnt funktionieren.
Wenn du in die XPSE-Funktionsreferenz [...] schaust, wirst du feststellen, dass der Befehl nicht existiert.
Ich nehme an, dass du die Größe in Bytes einer Bereichsvariablen haben willst. In dem Falle ist es besser, GlobalAlloc [...] zu verwenden, die erhaltene Adresse in einer Longvariablen zu speichern und diese dann wie eine Bereichsvariable zu verwenden. Dispose wird dann durch GlobalFree [...] ersetzt, SizeOf durch GlobalSize [...] . KompilierenMarkierenSeparieren Ernst (05.05.14)
bei dem Versuch die API ~DRAWTEXT zu verwenden, gibt es aufgrund der xpse-eigenen Funktion die Warnung: Funktion DRAWTEXT erwartet bei Parameter 4. Funktion: WNDPROC Abhilfe: STR kann man die API-Funktion irgendwie reindrücken oder kann man nur auf Umwegen zum Ziel (Textausrichtung , etc.) kommen ?
Ich bin mir nicht mehr ganz sicher, aber es sollte klappen, wenn du statt DrawText ~DrawText schreibst.
Ernst (05.05.14)
zum zweiten, z.B. Paintstruct: egal wie ich versuche die Struktur reinzubekommen ist die Meldung da Warnung: "PAINTRUCT" : Kollision mit Struktur (PAINTSTRUCT) wenn xpse die verschiedenen Strukturen schon kennt, wie verwende ich sie dann richtig ? Grüße
So: KompilierenMarkierenSeparieren Ich glaube, XPSE erlaubt es dir, die Tilde wegzulassen. Wichtig ist aber, dass der Strukturname nicht mit der Headerkonstanten PAINTSTRUCT kollidiert. Ich nehme an, dass das das Problem ist. |
|
|
| |
|
|
|
Ernst | @Nico - funkt leider nicht die APIs schreibe ich gewohnheitsmäßig immer mit der Tilde; da man aber diese in xpse weglassen kann, liegt vieleicht eben darin das Problem. xpse kann dadurch sichtlich nicht zwischen eigenem drawtext und api-drawtext unterscheiden und will nur 4 Parameter. gibts dafür vielleicht einen workaround ?
betreffend der Strukturen habe ich unter anderem auch genau diese Variante schon versucht - negativ, aber nun ist es mir klar warum; ich hab's innerhalb einer nProc versucht.
sizeof -Problem: habe ich dich da richtig verstanden, dass $pushkeyword bei nProcs keinen Einfluss hat, und ebenn nur selbst definierte, xpse-eigenen und api-Funktionen angewendet werden können - gibt es eigentlich für sizeof eine adäquate (kurze) api-Funktion ? Gruß Ernst |
|
|
| |
|
|
|
E.T. |
{$iq} {pushkeyword sizeof}
Schon mal mit
{$iq} {$pushkeyword sizeof}
versucht |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 06.05.2014 ▲ |
|
|
|
|
Ernst | @E.T. war nur ein Schreibfehler habe es schon mit {$pushkeyword sizeof} versucht (siehe meine erste Frage)
Nachtrag @Nico Mir ist nun klar, warum es nicht funktioniert hat, weil ich dies alles innerhalb einer nProc unterbringen wollte - geht halt nicht. "workaround" für Textausrichtung habe ich mir bereits erledigt. |
|
|
| |
|
|
|
Nico Madysa | Ernst (06.05.14)
sizeof -Problem: habe ich dich da richtig verstanden, dass $pushkeyword bei nProcs keinen Einfluss hat, und ebenn nur selbst definierte, xpse-eigenen und api-Funktionen angewendet werden können
Die Kompilerdirektive PUSHKEYWORD existiert aus Kompatibilitätsgründen und versichert XPSE, dass eine gewisse Funktion vorhanden ist, obwohl sie XPSE nicht bekannt ist -- zum Beispiel, weil die Funktion erst in einer neueren XProfan-Version eingebaut worden ist.
Innerhalb von NProcs darfst du aber keine XProfan-Funktionen verwenden. Verwenden kannst du nur WinAPI-Funktionen und Funktionen, die in der XPSE-Referenz [...] definiert sind. Du siehst sicherlich, dass da manches fehlt.
Ernst (06.05.14)
gibt es eigentlich für sizeof eine adäquate (kurze) api-Funktion ? Gruß Ernst
Ja, GlobalSize . Das Problem ist, dass ich nicht weiß, ob GlobalSize etwas mit XProfan-eigenen Bereichsvariablen anzufangen weiß. Das ist der Grund dafür, dass ich empfohlen habe, innerhalb von NProcs grundsätzlich nur mit GlobalAlloc erstellte Speicherbereiche zu verwenden. Sie bieten eine nahezu gleiche Funktionalität und ich kann mich darauf verlassen, dass sie machen, was sie sollen. |
|
|
| |
|
|
|
Findus | Ernst (06.05.14)
@Nico - funkt leider nicht die APIs schreibe ich gewohnheitsmäßig immer mit der Tilde; da man aber diese in xpse weglassen kann, liegt vieleicht eben darin das Problem. xpse kann dadurch sichtlich nicht zwischen eigenem drawtext und api-drawtext unterscheiden und will nur 4 Parameter. gibts dafür vielleicht einen workaround ?
In diesem Fall liegt das eher daran das es die Funktion auch nochmal als xpse Funktion gibt direkt von xpse: [...]
Da ist der 4. parameter ein string.
Wenn Du zentrierten text willst usw dann kannst du ja mal die drawtextex api verwenden denn die geht gut dafür.
Statt globalfree usw würde ich die xpse funktionen nehmen die wie die xprofan funktionen lauten also dim und dispose, die gehen auch in nprocs und sind da auch gelistet. [...] |
|
|
| |
|
|
|
Ernst | Findus (09.05.14)
Wenn Du zentrierten text willst usw dann kannst du ja mal die drawtextex api verwenden denn die geht gut dafür. genau das ist’s (ich war zu stark auf drawtext fixiert) – Danke Findus (09.05.14)
Statt globalfree usw würde ich die xpse funktionen nehmen die wie die xprofan funktionen lauten also dim und dispose, die gehen auch in nprocs und sind da auch gelistet. dim und dispose verwende ich ohnedies, aber mir ging/geht es um das sizeof normalerweise würde ich schreiben textlen& = ~GetWindowText(hWnd&, Text#, sizeof(#)-1) aber wie mach ich es in einer nproc, die sizeof nicht kennt – und eine passende api hab ich auch nicht gefunden |
|
|
| |
|
|
|
Nico Madysa | Findus (09.05.14)
Statt globalfree usw würde ich die xpse funktionen nehmen die wie die xprofan funktionen lauten also dim und dispose, die gehen auch in nprocs und sind da auch gelistet. [...]
Hoppla, da hab ich getrieft und die Referenz nicht richtig gelesen.
Ernst (09.05.14)
dim und dispose verwende ich ohnedies, aber mir ging/geht es um das sizeof normalerweise würde ich schreiben textlen& = ~GetWindowText(hWnd&, Text#, sizeof(#)-1) aber wie mach ich es in einer nproc, die sizeof nicht kennt ? und eine passende api hab ich auch nicht gefunden
Ich kann mir sehr gut vorstellen, dass XPSEs Dim- und Dispose-Funktionen nur Wrapper um GlobalAlloc und GlobalFree sind. Schau doch einfach mal, ob der folgende Code das erwartete Ergebnis ausgibt:
|
|
|
| |
|
|
|
Ernst | Schreibfehler: textlen& = ~GetWindowText(hWnd&, Text#, sizeof(#)-1) sollte sein: textlen& = ~GetWindowText(hWnd&, Text#, sizeof(Text#)-1)
@Nico: jedenfalls ist globalsize exakt die api, die ich gesucht hatte. Danke |
|
|
| |
|
|