| Yo schreib hier veces simplemente frech algunos meiner Lieblingshelferfunktionen hin. Jede dieser Características me está persönlich muy wichtig y ha se en el XProfanalltag bewährt. Welche su tatsächlich como übernommen se (si überhaupt) juega para mich sólo una Nebenrolle. Hab auch unos pocos Rems angefügt: KompilierenMarcaSeparacióndulcoiF{settimer 1;waitinput;killtimer}// hierfür eine andere Lösung wäre angebracht
stri(float f){;return substr$(str$(f),1,.);}//ohne decimals verstellen zu müssen ohne .
valsubstr(string s,long p,string d){;return val(substr$(s,p,d));}
setsubstr(string s,long n,string d,ns){return ins$(ns,del$(s,n,1,d),n,d)}
lastsubstr(string s,d){return (substr$(s,len(s,d),d))}
notlastsubstr(string s,d){return del$(s,len(s,d),1,d)}
getfnamefromcmdstring(string s){return lastsubstr(s,\)}
getfpathfromcmdstring(string s){return notlastsubstr(s,\)+\}
getfileext(string fle){
casenot instr(.,fle):return
return lastsubstr(fle,.)
}
getTextWidth(string text,long xx){
if pcount==1 {
mem mem:=8
GetTextExtentPoint32(hdc,Addr(text),len(text),mem)
long result:=long(mem,0)
dispose mem
return result
} else {
long l:=getTextWidth(text)
case l<=xx : return text
text:=text+...
whilenot l<=xx {
case len(text)==4 : break
text:=del$(text,len(text)-3,1)
l:=getTextWidth(text)
}
return text
}
}
tsnd(long v){//setzt Tausenderpunkte
string s:=stri(v)
long l:=len(s)
long t:=(l-1)3
whileloop t {s:=ins$(.,s,l-loop*3+1)}
return s
}
stringescape(string s){//oft gebraucht wenn man z.B. mehrzeilige Texte in nur einer Zeile abspeichern möchte
s:=translate$(s,\,\\)
s:=translate$(s,chr$(10),\n)
s:=translate$(s,chr$(7),\t)
s:=translate$(s,chr$(9),\t)
s:=translate$(s,chr$(32),\s)
s:=translate$(s,chr$(34),\q)
whileloop 31 {s:=translate$(s,chr$(loop),)}
return s
}
stringunescape(string s){
s:=translate$(s,\\,chr$(1))
s:=translate$(s,\n,
)
s:=translate$(s,\t, )
s:=translate$(s,\s, )
s:=translate$(s,\q,q)
s:=translate$(s,chr$(1),\)
return s
}
__secure_filename_(string fle) {//allowedchars sollte aus einem frei definierbaren String bezogen werden können.
string allowedchars:= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÖÄÜöäüß0123456789
string n,nc
long c:=len(fle)
whileloop c {
nc:=mid$(fle,loop,1)
if instr(nc,allowedchars) {n:=n+nc}else{n:=n+ }
;}
;return trim$(while_replace(n, , ))
}
while_replace(s$,from$,to$) {//wichtig! könnte ein weiterer bool param sein für translate!
while instr(from$,s$) {s$:=translate$(s$,from$,to$)}
return s$
}
gettext2g(long h){//sollte XProfan eh können!
long l:=sendmessage(h,wm_gettextlength,0,0)
casenot l:return
inc l
mem mem=l
sendmessage(h,wm_gettext,l,mem)
string s:=string$(mem,0)
dispose mem
return s
}
settext2g(long h,string txt){sendmessage(h,wm_settext,0,addr(txt))}
hexlisttostring(string s){
long l:=len(s)
string h,ns
whileloop 1,l,2{
h:=mid$(s,loop,2)
case h==00 : break
ns:=ns+chr$(val($+h))
}
return ns
}
stringtohexlist(string s){
long l:=len(s)
string ns,ts
whileloop l{
ts:=hex$(ord(mid$(s,loop,1)))
case len(ts)==1 : ts:=0+ts
ns:=ns+ts
}
return ns
}
lb.create(bool mode) {;return Control(LISTBOX,, $100+if(mode,2,),,,,,hwnd,,);}
lb.sortinternallist{//interne Liste sortieren! Wichtig!
long h:=lb.create(true)//create sorted list
movelisttohandle(h)
clearlist
movehandletolist(h)
destroywindow(h)
}
Was desafortunadamente wirklich fehlt:
+ el Möglichkeit una einzelne Usermessage entfernen a puede, qué bisher sólo meiner usermessages-Unit posible es - qué de paso el einzige Daseinsberechtigung el Unit darstellt, + el Möglichkeit sin API mousex,mousey y Maustasten ausserhalb hwnd a ermitteln, wodurch uno gezwungen es una Art MausInclude utilizarse: z.B.: KompilierenMarcaSeparación//Versión:0.0.1
#include inc/helpers.inc
long mouse.x,mouse.y
mem mouse.mem=point
mouse.doLeftKlick {
mouse_event(2, 0,0 ,0,0)
mouse_event(4, 0,0 ,0,0)
dulcoiF
}
lm_{;volver if(getasynckeystate(1)==0,falso,true);}
rm_{;volver if(getasynckeystate(2)==0,falso,true);}
whilem_{mientras que (lm_() | rm_()){sleep 1}}
getmousepos{
GetCursorPos(mouse.mem)
mouse.x:=mouse.mem::x&
mouse.y:=mouse.mem::y&
}
setmousepos(long x,y){;setcursorpos(x,y);}
clipmouse(long x,y,xx,yy){
mem mem=rect
mem::left&:=x
mem::top&:=y
mem::right&:=xx
mem::bottom&:=yy
clipcursor(mem)
disponer mem
}
mouse.close{
disponer mouse.mem
}
Un native Implementierung de filegetcontents y fileputcontents podría derart umgesetzt ser: KompilierenMarcaSeparación
ffgc(cadena fle){
long b:=filesize(fle)
caso b<1 : volver
mem mem=b
long r:=blockread(fle,mem,0,b)
cadena s:=char$(mem,0,r)
disponer mem
volver s
}
ffpc(cadena fle,s){
long l:=len(s)
if l=0 {
long fh:=assign(fle)
rewrite fh
close fh
assign #fh,
volver
}
mem mem=l+1
cadena mem#,0=s
blockwrite fle,mem,0,l
disponer mem
}
Und entonces fällt me siempre otra vez el imprimir no wirklich el komplette hwnd nutzt - besonders entonces si el hwnd nachträglich maximiert wurde.
Apéndice: En Programación de Spielen lugar Yo oft fest el no wirklich simplemente es el wm_close vom hwnd abzufragen si uno kein WaitInput y GetMessage verwendet. |
|