| je schreib ici la fois simple frech quelques meiner Lieblingshelferfunktionen hin. chacun cette Funktionen c'est moi personnelle très important et hat sich im XProfanalltag bewährt. quelle en réellement comment übernommen wird (si überhaupt) écoutes pour mich seulement une Nebenrolle. Hab aussi un paire Rems angefügt: KompilierenMarqueSéparationdulcoiF{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)
}
quoi malheureusement wirklich fehlt:
+ qui Possibilité une einzelne Usermessage entfernen trop peut, quoi bisher seulement avec meiner usermessages-Unit possible ist - quoi incidemment qui einzige Daseinsberechtigung qui Unit darstellt, + qui Possibilité sans API mousex,mousey et Maustasten ausserhalb hwnd trop ermitteln, wodurch on gezwungen ist une Art MausInclude trop verwenden: z.B.: KompilierenMarqueSéparation//Version: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_{;return si(getasynckeystate(1)==0,faux,vrai);}
rm_{;return si(getasynckeystate(2)==0,faux,vrai);}
whilem_{tandis 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)
dispose mem
}
mouse.close{
dispose mouse.mem
}
une native Implementierung de filegetcontents et fileputcontents pourrait derart mise en œuvre son: KompilierenMarqueSéparation
ffgc(string fle){
long b:=filesize(fle)
cas b<1 : return
mem mem=b
long r:=blockread(fle,mem,0,b)
string s:=char$(mem,0,r)
dispose mem
return s
}
ffpc(string fle,s){
long l:=len(s)
si l=0 {
long fh:=assign(fle)
rewrite fh
close fh
assign #fh,
return
}
mem mem=l+1
string mem#,0=s
blockwrite fle,mem,0,l
dispose mem
}
et ensuite fällt mir toujours wieder sur cela imprimer pas wirklich cela komplette hwnd utilise - besonders ensuite si cela hwnd nachträglich maximiert wurde.
Nachtrag: chez qui Programmation de Spielen lieu je souvent fest cela es pas wirklich simple ist den wm_close vom hwnd abzufragen si on ne...aucune WaitInput et GetMessage verwendet. |
|