Italia
Wünsche und Anregungen

Erledigt: Einige meiner Lieblingshelfer in XProfan

 
Ich schreib hier mal einfach frech einige meiner Lieblingshelferfunktionen hin. Jede dieser Funktionen ist mir persönlich sehr wichtig und hat sich im XProfanalltag bewährt. Welche davon tatsächlich wie übernommen wird (wenn überhaupt) spielt per mich nur eine Nebenrolle. Hab auch ein paar Rems angefügt:
KompilierenMarkierenSeparieren
dulcoiF{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 leider wirklich fehlt:

+ die Möglichkeit eine einzelne Usermessage entfernen zu können, was bisher nur mit meiner usermessages-Unit possibile ist - was übrigens die einzige Daseinsberechtigung der Unit darstellt,
+ die Möglichkeit ohne API mousex,mousey und Maustasten ausserhalb hwnd zu ermitteln, wodurch man gezwungen ist eine Art MausInclude zu verwenden: z.B.:
KompilierenMarkierenSeparieren
Eine native Implementierung von filegetcontents und fileputcontents potuto derart umgesetzt sein:
KompilierenMarkierenSeparieren
Und dann fällt mir immer wieder auf das print nicht wirklich das komplette hwnd nutzt - besonders dann wenn das hwnd nachträglich maximiert wurde.



Nachtrag: Bei der Programmazione von Spielen stelle ich oft fest das es nicht wirklich einfach ist den wm_close vom hwnd abzufragen wenn man kein WaitInput und GetMessage verwendet.
 
07.09.2007  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.154 Views

Untitledvor 0 min.
Christof Neuß16.12.2017
Walter02.02.2016
iF23.10.2011

Themeninformationen

Dieses Thema hat 1 subscriber:

iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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