Deutsch
Forum

nproc / sizeof / DrawText / Strukturen

 
- Seite 1 -



Ernst
warum meckert XPSE bei der Funktion sizeof  in einer nproc
( Warnung: undeklarierte Funktion : SIZEOF )
auch {$pushkeyword sizeof} hilft nicht
 
05.05.2014  
 



 
- 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
 
06.05.2014  
 




E.T.

{$iq}
{pushkeyword sizeof}


Schon mal mit

{$iq}
{$pushkeyword sizeof}

versucht
 
XProfan X2
Grüß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.
 
06.05.2014  
 




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.
 
08.05.2014  
 




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. [...] 
 
09.05.2014  
 




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
 
09.05.2014  
 




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:
nproc TestGlobalSize

    parameters sizeOfMem&
    var mem& = Dim(sizeOfMem&)
    var result& = GlobalSize(mem&)
    Dispose(mem&)
    return result&

endproc

proc assert

    parameters param&
    print param&,
    print if(TestGlobalSize(param&) = param&, "OK", "Fail!")

endproc

cls
assert(4)
assert(23)
assert(42)
waitinput
end
 
10.05.2014  
 




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.
long text=dim(255)
var textlen& = ~GetWindowText(hWnd&,Text,~GlobalSize(Text)-1)
Danke
 
10.05.2014  
 



 
- 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???
 
17.05.2014  
 




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.
 
17.05.2014  
 




Ernst
ich hab's mir gedacht, aber ich wollte es bestätigt wissen.
Danke
 
17.05.2014  
 



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.
 
09.07.2014  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

20.684 Betrachtungen

Unbenanntvor 0 min.
p.specht05.12.2017
Ernst24.06.2016
Wilfried02.06.2016
funkheld11.04.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie