| |
|
|
- Seite 1 - |
|
Ernst | warum meckert XPSE bei der Funktion sizeof in einer nproc ( Warnung: undeklarierte Funktion : SIZEOF ) auch {$pushkeyword sizeof} hilft nicht |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
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 |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Ernst | bleibt nur noch der Punkt Struktur; ist es überhaupt möglich innerhalb einer nProc eine Struktur zu übergeben? außerhalb der nProc z.B. aber innerhalb der nProc bei allen möglichen und unmöglichen Syntaxvariationen die Warnung, dass es eine Kollision mit der Struktur (xyz) gibt. Kann man nun nur Speicher in entsprechender Größe dimensionieren, ohne definitiv eine Structur zu übertragen, oder ... - aber wie??? |
|
|
| |
|
|
|
Nico Madysa | Ich weiß gerade nicht genau, was du machen willst, aber wenn ich mich recht entsinne, kannst du Speicherbereichen innerhalb von NProcs keine Struktur aufdrücken.
Hat iF nie eingebaut.
So weit ich weiß, geht der Zugriff auf beliebige Speicherbereiche nur mit Set/GetLong und seinen Verwandten. |
|
|
| |
|
|
|
Ernst | ich hab's mir gedacht, aber ich wollte es bestätigt wissen. Danke |
|
|
| |
|
|
|
| Man kann einfach die Adresse einer Struktur übergeben und dann ja direkt die Werte aus dem Speicher lesen und schreiben. Strukturen beschreiben ja nur die Struktur eines Speichers. |
|
|
| |
|
|