Deutsch
Stammtisch & Café

Mißstand IDE?

 
- Seite 1 -



René
Wagner
Nachdem ich im einem XPSE-Thread einige Aussagen gefunden habe, die mir seit geraumer Zeit auch durch den Kopf gehen, habe ich mich doch mal dazu entschlossen, das ganze hier niederzuschreiben und eine Diskussion zu starten.

Das Problem: Profan fehlt eine integrierte IDE/Editor.

Machen wir mal eine Bestandsaufnahme:

der Profaneigene Editor: wirkt unmodern, bietet nur grundsätzliche Möglichkeiten der Quelltextbearbeitung.

PrfPad/XProfan-Writer: etwas modernere Ausführungen, bietet ein paar nette Zusatztools (Prozedurlisten zum Springen z.B.), wird allerdings nicht mehr gepflegt, womit schon bei XPrf9 ein paar Problemchen auftreten

XPrfEdit: bietet hervorragende Ansätze/Ideen (endlich mal ist der Debugger aus dem Editor heraus aufzurufen), es fehlen nur viele Sachen zur Quelltextbearbeitung und leider ist da seit ner geraumen Weile auch nichts mehr passiert.

VWP2: meines Wissen der erste umfangreiche Fenstereditor, leider wird auch er nicht mehr gepflegt.

Roko ObjectCreator: atm der wohl umfangreichste Editor, wird weiter gepflegt

FA ControlBuilder: ist er seit kurzem auf dem Markt, kann ich im Moment nicht einschätzen, habn nur kurz ausprobiert

Was allen 3 Fenstereditoren auf dem Weg zur kompletten IDE fehlt: die integrierte Quelltexteditor.

Profan Debugger: Stefan Schnell hat jetzt ja eine kostenpflichtige Version des Debuggers veröffentlicht, die für den professionellen Profanprogrammierer sehr sinnvoll sein dürfte.

Soweit zur Bestandsaufnahme, jetzt meine Meinung zu dem Thema:
Minimum der erweiterte Profan Debugger muss zum Standardumfang von Profan gehören. Ein entsprechend höherer Preis für die Vollversion ist da nur gerecht.

Zum Thema Editor/IDE ists schon etwas schwieriger. Die Integration des PrfPad als Profan-Standardeditor ging ja nach hinten los (keine Programmpflege mehr), damit kommt man auf Dauer nicht weiter.
Der interessierte Programmierer kriegt nichtmal für gutes Geld eine ohne Abstriche einsetzbare IDE. Hier ist, da gebe ich Christian und Dieter recht, der dringendste Handlungsbedarf.
 
Mit XProfan erstellte Freeware findet ihr hier:  [...] 

US World Domination Tour - bombing a country near you...
11.09.2005  
 



 
- Seite 2 -


Was meiner Meinung den XProfanprogger daran hindert eine IDE zu basteln ist doch zum größten Teil die Problematik eines Edits mit Syntaxhighlightening - oder?
 
12.09.2005  
 




Frank
Abbing
Naja. Ich hab mich schonmal an einem Editor versucht. Hab dazu ein Richedit verwendet und ein eigenes Syntax-Hightlightning gemacht. Leider hat das MS-Richedit derart viele Bugs, dass ich irgendwann keine Lust mehr hatte.
Wer sowas anfangen möchte, sollte es unbedingt ohne Richedit machen! Und ein Multiedit kann nicht beliebig viele Daten aufnehmen, unter 98/ME. Also muss ein selbstgemachtes Control her.
 
12.09.2005  
 



Richtig. Also habe ich mich mal rangesetzt und eins gebaut.

Editieren ist noch nicht möglich - aber das Anzeigen funktioniert bereits.

Das Control werde ich später - wenn ich mit dem XPSE Update fertig bin - fertigstellen.

Hier ein funktionierender Auszug:
KompilierenMarkierenSeparieren
 {$cleq}
set(FastMode,1)
def dwp(4) !user32,DefWindowProcA
def mev(5) !USER32,mouse_event
def cwp(5) !user32,CallWindowProcA
def getdc(1) !user32,GetDC
def cnhex(4) !user32,CallNextHookEx
def swhex(4) !user32,SetWindowsHookExA
def gwtpid(2) !user32,GetWindowThreadProcessId
/* lecker kuchen geht einem auf die nüsse :P */
declare sfnt&,bt&,sb&,sbar&,ex%,appname$
declare _hWnd&,fh&,t&,mem#,_hwndyy&,_hwndxx&,ch#,_fsiz&,_hwnddc&,scy&,scymem#,_slines&,scymemwrap#,scymrmem#,more#,kwds#,hKbdHook&
 $U lists.pcu = lst.
 $U file.pcu = f
appname$:=XPrfIde3
dim kwds#,1024
clear kwds#
dim more#,1024
clear more#
dim scymem#,2000000
clear scymem#
dim scymrmem#,2000000
clear scymrmem#
dim ch#,1
dim scymemwrap#,7
clear scymemwrap#
scy&:=1
cls
app.init
__loadSrcToMem xprfide7.prf
sfnt&:=External(gdi32,GetStockObject,16)
external(gdi32,SelectObject,_hWnddc&,sfnt&)
showwindow(_hwnd&,3)

whilenot ex%

    getmessage

wend

messagebox ok,ok,0
dispose more#
dispose scymem#
dispose scymrmem#
dispose ch#
dispose scymemwrap#
dispose mem#
dispose kwds#
external(user32,PostQuitMessage,0)
end

proc _WProc

    Parameters Wnd&, Msg&, Wparam&, Lparam&

    if msg& == 16// close

        ex%:=1

    elseif msg& == 3// move

    elseif msg& == 5// size

        _redrw

    elseif msg& == 15// paint

        __dispSrcmem 0

    elseif msg& == 256// keydwn

        settext _hwnd&,str$(wparam&)

    elseif msg& == $108// keylast

        settext _hwnd&,str$(wparam&)

    elseif msg& == 522// wheel

        end

        if wparam&>0

            texter.scrollup	3

        else

            texter.scrolldown 3

        endif

    elseif msg&==$0115

        if lparam&==sbar&

            if wparam&==0

                texter.scrollup 1

            elseif wparam&==1

                texter.scrolldown 1

            elseif wparam&==3

                texter.scrolldown _hwndyy&15-1

            elseif wparam&==2

                texter.scrollup _hwndyy&15-1

            elseif wparam&>65000

                texter.setscrollpos (Wparam&-5)

            else

                texter.setscrollpos getscrollpos(sbar&)*65536

            endif

        endif

    Endif

    return dwp(Wnd&, Msg&, Wparam&, Lparam& )

endproc

proc _createwindow

    parameters tit$
    declare mem#,l&,apn&,cisreg&
    l&:=ProcAddr(_WProc,4)
    apn&=addr(tit$)
    dim mem#,40

    asmstart _cwex

        parameters mem#,l&,%HInstance,apn&
        return cisreg&
        .data
        ic dd 32516
        cu dd 32512
        bg dd 0
        .code
        invoke LoadIcon,0,ic
        mov ic,eax
        invoke LoadCursor,0,cu
        mov cu,eax
        invoke GetStockObject,bg
        mov bg,eax
        mov eax,para1
        mov ebx,0
        mov [eax],ebx
        mov ebx,para2
        mov [eax+4],ebx
        mov ebx,0
        mov [eax+8],ebx
        mov [eax+12],ebx
        mov ebx,para3
        mov [eax+16],ebx
        mov ebx,ic
        mov [eax+20],ebx
        mov ebx,cu
        mov [eax+24],ebx
        mov ebx,bg
        mov [eax+28],ebx
        mov ebx,para4
        mov [eax+32],ebx
        mov [eax+36],ebx
        invoke RegisterClass,eax

        .if !eax

            jmp eop

        .endif

        invoke CreateWindowEx,0,para4,para4,13565952,0,0,640,480,0,0,para3,0
        eop:

    asmend

    dispose mem#
    casenot cisreg& : end
    return cisreg&

endproc

proc app.init

    _hWnd&:=_createwindow(appname$)
    _hWnddc&:=getdc(_hwnd&)
    hKbdHook& = swhex(2,ProcAddr(kbProc, 3), 0,gwtpid(_hwnd&, 0))
    sb&:=create(StatusWindow,_hwnd&,Bereit.)
    sbar&:=createvscroll(_hwnd&,,0,0,0,0)
    _hwndxx&:=width(_hwnd&)
    _hwndyy&:=(height(_hwnd&)-height(sb&))

endproc

proc texter.scrollup

    parameters v&
    scy&:=scy&-v&
    case scy&<1:scy&:=1
    __dispSrcmem 0

endproc

proc texter.scrolldown

    parameters v&
    scy&:=scy&+v&
    case scy&>_slines&:scy&:=_slines&
    __dispSrcmem 0

endproc

proc texter.setscrollpos

    parameters v&
    v&:=(v&-1)65536
    scy&:=v&+1
    __dispSrcmem 0

endproc

proc _redrw

    declare x&,y&
    _hwndxx&:=width(_hwnd&)
    _hwndyy&:=(height(_hwnd&)-height(sb&))
    /*
    external(user32,SetWindowPos,sb&,0,0,0,0,0,28)
    external(user32,InvalidateRect,sb&,0,0)
    external(user32,UpdateWindow,sb&)
    external(user32,SetWindowPos,sbar&,0,(_hwndxx&-17),0,17,_hwndyy&,28)
    external(user32,InvalidateRect,sbar&,0,0)
    external(user32,UpdateWindow,sbar&)
    this now to asm b/c from 6 externals to 1 external! much more than 6 times faster!!! :P
    */

    asmstart _fupdte

        parameters sb&,sbar&,_hwndxx&,_hwndyy&
        invoke SetWindowPos,para1,0,0,0,0,0,28
        invoke InvalidateRect,para1,0,0
        invoke UpdateWindow,para1
        mov eax,para3
        sub eax,17
        invoke SetWindowPos,para2,0,eax,0,17,para4,28
        invoke InvalidateRect,para2,0,0
        invoke UpdateWindow,para2

    asmend

    if _hwndyy&>16

        __dispSrcMem 0

    endif

endproc

proc __loadSrcToMem

    parameters fle$
    declare s$,cx&,sz&
    fh&:=fopen(fle$,rb)

    if fh&

        sz&:=getfilesize(#fh&)+1
        dim mem#,sz&
        _fsiz&:=blockread(#fh&,mem#,0,sz&-1)
        fclose fh&

    endif

    byte mem#,_fsiz&=10
    _slines&:=__dispSrcmem(1)
    _fsiz&+;
    setscrollrange sbar&,1,_slines&

endproc

Proc kbProc

    Parameters nCode&, wParam&, lParam&
    Declare bval&
    settext _hwnd&,str$(wparam&)

    If wParam& = 13

        If lParam& < 0

        EndIf

        bval&:=1

    elseif wparam& ==40  down

        If lParam& > 0

            if scy&<_slines&;scy&+

                __dispSrcmem 0

            endif

        EndIf

        bval&:=1

    elseif wparam& ==38  up

        If lParam& > 0

            if scy&-1;scy&-

                __dispSrcmem 0

            endif

        EndIf

        bval&:=1

    elseIf wParam& = 222 Ä

        If lParam& < 0

        EndIf

        bval& = 1

    ElseIf wParam& = 192 Ö

        If lParam& < 0

        EndIf

        bval& = 1

    ElseIf wParam& = 186 Ü

        If lParam& < 0

        EndIf

        bval& = 1

    ElseIf wParam& = 219 ß

        If lParam& < 0

        EndIf

        bval& = 1

    Else

        cnhex(hKbdHook&, nCode&, wParam&, lParam&)
        bval& = 0

    EndIf

    Return bval&

EndProc

proc fstrl// not while! - is fastr!

    parameters s$,n&,c$
    declare l&
    l&:=len(s$)

    if l&==1

        return      +s$

    elseif l&==2

        return     +s$

    elseif l&==3

        return    +s$

    elseif l&==4

        return   +s$

    elseif l&==5

        return  +s$

    endif

    return s$

endproc

Proc __dispSrcmem

    parameters all%// all is only 1times needed to examine the code
    declare yy&,xx&,rcol&,spoint&,inmempt&,z&
    yy&:=_hwndyy&-15
    xx&:=width(_hwnd&)8-3
    case yy&<15 : return -1
    case xx&<3  : return -2
    external(gdi32,SetBkColor,_hWnddc&,rgb(255,255,255))
    external(gdi32,SetTextColor,_hWnddc&,rgb(0,0,0))
    external(gdi32,SelectObject,_hWnddc&,external(gdi32,CreatePen,0,1,rgb(255,255,255)))
    rcol&:=rgb(160,160,160)
    //if scy&==0;spoint&:=0;else;;endif//simpl scyToSpoint wrappa
    spoint&:=long(scymem#,(scy&-1)*4)
    inmempt&:=scy&*4
    case inmempt&<0 : inmempt&:=0
    case spoint&<0 : spoint&:=0
    string scymemwrap#,0=fstrl(str$(scy&),6,0)
    long more#,0=all%// 1==examine code - only 1 time per code after loading!
    long more#,4=_hwnddc&// addr(scymrmem#) //multiremmerka
    long more#,8=rcol&// remcolor
    //    2     3    4   5      6   7   8     9       10      11       12       13       14          15... :P

    asmstart _disp

        parameters scymrmem#,sfnt&,mem#,ch#,_fsiz&,xx&,yy&,kwds#,scymem#,spoint&,inmempt&,_hwndxx&,_hwndyy&,scymemwrap#,more#
        return z&
        .data
        varx dd 0
        vary dd 0
        varc dd 0
        vare dd 0
        varsglr db 0
        varmulr db 0
        varinstr db 0
        varoal db 0
        varoax dd 0
        varocx dd 0
        incycles dd 0
        incyclescol dd 0
        scymem dd 0
        examine dd 0
        scymrmem dd 0
        scy dd 0
        cdc dd 0
        inthislnmropened dd 0
        thislnAlrdyWrtn dd 0
        remcol dd 0
        mnoax dd 0
        cnt dd 0
        oal db 0
        isok db 0
        cschalt	db 0
        .code

        ;check ywin smaller aline {

            mov eax,para7

            .if eax<15

                jmp eop2

            .endif			;}

            mov eax,para11
            mov scy,eax
            ;cmon gimmy more nfos
            mov ebx,para15
            mov eax,[ebx]
            mov examine,eax
            mov eax,[ebx+4]
            mov cdc,eax
            mov eax,[ebx+8]
            mov remcol,eax
            ;eo morenfos
            mov ecx,para3		;prefill
            mov edx,para4
            mov ebx,para5
            mov varx,56
            mov vary,0
            mov eax,para10
            push eax
            mov eax,para11
            add scymem,eax
            pop eax
            ;PrintDec eax

            .while eax<ebx

                push eax				;sichern
                push ebx
                push ecx
                push edx
                mov varoax,eax
                mov varocx,ecx
                mov al,[ecx+eax]
                mov [edx],al
                ;check for multirem storrer / multirem in invisible area?
                push eax
                push ebx
                push edx
                push ecx
                mov ebx,scy
                add ebx,4
                mov eax,para1
                mov edx,[eax+ebx]

                .if edx==1

                    .if thislnAlrdyWrtn==0

                        mov varmulr,1

                        .if examine==0

                            invoke SetTextColor,cdc,remcol

                        .endif

                    .endif

                .endif

                pop ecx
                pop edx
                pop ebx
                pop eax
                ;EO check for multirem storrer

                .if al==9

                    mov al,32
                    mov [edx],al
                    push eax
                    push edx
                    push ebx
                    push ecx
                    mov ecx,7
                    lop:
                    push edx
                    push ecx
                    push eax
                    mov eax,para12
                    sub eax,24

                    .if varx<eax && examine==0

                        invoke TextOut,cdc,varx,vary,edx,1

                    .endif

                    pop eax
                    add varx,8
                    pop ecx
                    pop edx
                    mov al,32
                    mov [edx],al
                    dec ecx
                    cmp ecx,0
                    jne lop
                    pop ecx
                    pop ebx
                    pop edx
                    pop eax

                .elseif al==13

                    mov al,32
                    mov [edx],al

                .endif

                .if al>31

                    .if !examine

                        .if !cschalt

                            .if !varmulr && !varinstr && !varsglr

                                .if al>64

                                    .if incycles==0

                                        .if ((al>64) && (al<91)) || ((al>96) && (al<123)) || al==95 ;wordizer

                                            push ebx		;sichern
                                            push eax
                                            push ecx
                                            push edx
                                            push eax
                                            mov eax,varoax
                                            mov cnt,eax
                                            mov ebx,0
                                            pop eax
                                            mov isok,1

                                            .while isok==1

                                                .if al>96	;uppercase

                                                    sub al,32

                                                .endif

                                                push ecx
                                                mov ecx,para8
                                                mov [ecx+ebx],al
                                                pop ecx
                                                inc ebx
                                                inc cnt
                                                mov eax,cnt
                                                mov al,[ecx+eax]

                                                .if ((al>64) && (al<91)) || ((al>96) && (al<123)) || (al==95) || ((al>47) && (al<58)) || al==46

                                                    mov isok,1

                                                .else

                                                    mov isok,0

                                                .endif

                                            .endw

                                            mov oal,al
                                            mov incycles,ebx
                                            mov incyclescol,0
                                            push eax
                                            push ebx
                                            push ecx
                                            push edx

                                            .if (oal>34 && oal<39) || oal==33

                                                inc incycles

                                                .if oal==36 ;check whoops not a string buta func?

                                                    inc cnt
                                                    inc ebx
                                                    mov eax,cnt
                                                    mov al,[ecx+eax]

                                                    .if al==40

                                                        invoke SetTextColor,cdc,16711680

                                                    .else

                                                        invoke SetTextColor,cdc,25600

                                                    .endif

                                                .else

                                                    invoke SetTextColor,cdc,25600

                                                .endif

                                            .else

                                                invoke SetTextColor,cdc,16711680

                                            .endif

                                            pop edx
                                            pop ecx
                                            pop ebx
                                            pop eax
                                            push ecx
                                            mov ecx,para8
                                            push eax
                                            mov eax,0
                                            mov [ecx+ebx],eax
                                            pop eax
                                            ;PrintStringByAddr ecx
                                            pop ecx
                                            pop edx			;total recall :P
                                            pop ecx
                                            pop eax
                                            pop ebx

                                        .endif

                                    .endif

                                .endif

                            .endif

                        .endif

                    .endif

                    .if al==123;125{}

                    .if !varmulr && !varinstr && !varsglr

                        ;lookin cschalt
                        push eax
                        push ecx
                        push ebx
                        mov ebx,varoax
                        inc ebx
                        mov al,[ecx+ebx]

                        .if al==36

                            mov cschalt,1

                        .endif

                        pop ebx
                        pop ecx
                        pop eax		;eo lookin
                        push eax		;sichern
                        push ebx
                        push ecx
                        push edx

                        .if cschalt==1

                            invoke SetTextColor,cdc,255

                        .else

                            invoke SetTextColor,cdc,8421504

                        .endif

                        pop edx			;total recall :P
                        pop ecx
                        pop ebx
                        pop eax

                    .endif

                .elseif al==125

                    mov cschalt,0

                    .if !varmulr && !varinstr && !varsglr

                        mov incycles,1
                        mov incyclescol,0

                    .endif

                .elseif al>42 && al<47

                    .if !varmulr && !varinstr && !varsglr && !cschalt

                        push eax		;sichern
                        push ebx
                        push ecx
                        push edx
                        invoke SetTextColor,cdc,255
                        pop edx			;total recall :P
                        pop ecx
                        pop ebx
                        pop eax
                        mov incycles,1
                        mov incyclescol,0

                    .endif

                .elseif al==92 || al==93 || al==91 || al==61 || al==60 || al==62

                    .if !varmulr && !varinstr && !varsglr && !cschalt

                        .if examine==0

                            push eax		;sichern
                            push ebx
                            push ecx
                            push edx
                            invoke SetTextColor,cdc,255
                            pop edx			;total recall :P
                            pop ecx
                            pop ebx
                            pop eax

                        .endif

                        mov incycles,1
                        mov incyclescol,0

                    .endif

                .elseif al==34

                    .if  !cschalt

                        cmp varmulr,0
                        jne nostr
                        cmp varsglr,0
                        jne nostr

                        .if varinstr==0

                            mov varinstr,1

                            .if examine==0

                                push eax		;sichern
                                push ebx
                                push ecx
                                push edx
                                invoke SetTextColor,cdc,8421376
                                pop edx			;total recall :P
                                pop ecx
                                pop ebx
                                pop eax

                            .endif

                        .else

                            mov incycles,1
                            mov incyclescol,0
                            mov varinstr,0

                        .endif

                        nostr:

                    .endif

                .elseif al==39			; rem

                    .if !varmulr && !varinstr && !varsglr && !cschalt

                        mov varsglr,1

                        .if examine==0

                            push eax		;sichern
                            push ebx
                            push ecx
                            push edx
                            invoke SetTextColor,cdc,remcol
                            pop edx			;total recall :P
                            pop ecx
                            pop ebx
                            pop eax

                        .endif

                    .endif

                .elseif al==47 && varinstr==0 && !cschalt		; / r em?/* */

                    mov varoal,al		;gottaNextByteOfSource->al
                    mov ecx,varocx
                    mov eax,varoax
                    mov al,[ecx+eax+1]

                    .if al==42			; * r em?

                        .if varmulr==0

                            mov inthislnmropened,1

                            .if examine==0

                                push eax		;sichern
                                push ebx
                                push ecx
                                push edx
                                invoke SetTextColor,cdc,remcol
                                pop edx			;total recall :P
                                pop ecx
                                pop ebx
                                pop eax

                            .endif

                            mov varmulr,1

                        .endif

                    .elseif al==47

                        .if varmulr==0

                            mov varsglr,1

                            .if examine==0

                                push eax		;sichern
                                push ebx
                                push ecx
                                push edx
                                invoke SetTextColor,cdc,remcol
                                pop edx			;total recall :P
                                pop ecx
                                pop ebx
                                pop eax

                            .endif

                        .endif

                    .endif

                    mov al,varoal

                .elseif al==42  && varinstr==0 && !cschalt	; * r em?

                    mov varoal,al		;gottaNextByteOfSource->al
                    mov ecx,varocx
                    mov eax,varoax
                    mov al,[ecx+eax+1]

                    .if al==47			; * r em?

                        .if inthislnmropened==0

                            push eax
                            push ebx
                            push edx
                            mov edx,1
                            mov eax,para1
                            mov ebx,scy
                            add ebx,4
                            mov [eax+ebx],edx
                            pop edx
                            pop ebx
                            pop eax
                            mov varmulr,1
                            mov thislnAlrdyWrtn,1

                        .endif

                        .if varmulr==1

                            mov incycles,2
                            mov incyclescol,0
                            mov varmulr,0

                        .endif

                    .endif

                    mov al,varoal

                .endif

                push eax
                mov eax,para6
                shl eax,3

                .if varx<eax

                    .if examine==0

                        invoke TextOut,cdc,varx,vary,edx,1

                    .endif

                .endif

                pop eax
                add varx,8

                .if incycles>0

                    dec incycles

                    .if incycles==0

                        .if examine==0

                            push eax		;sichern
                            push ebx
                            push ecx
                            push edx
                            invoke SetTextColor,cdc,incyclescol
                            pop edx			;total recall :P
                            pop ecx
                            pop ebx
                            pop eax

                        .endif

                    .endif

                .endif

            .else

                mov cschalt,0
                mov inthislnmropened,0
                push eax			;sichern
                push ebx
                push ecx
                push edx
                push eax			;storeScyMem
                push ebx
                push edx
                inc varoax
                mov edx,varoax
                dec varoax
                mov eax,para9
                mov ebx,scymem
                mov [eax+ebx],edx
                pop edx
                pop ebx
                pop eax
                add scymem,4
                ;eo storeScyMem
                mov al,32			;set edxmem 32 to fill line
                mov [edx],al
                mov ebx,para6			;xxwidthcharz
                mov eax,varx
                shr eax,3

                .while eax<ebx

                    .if examine==0

                        push eax		;sichern
                        push ebx
                        push ecx
                        push edx
                        invoke TextOut,cdc,varx,vary,edx,1
                        pop edx			;total recall :P
                        pop ecx
                        pop ebx
                        pop eax

                    .endif

                    add varx,8
                    inc eax

                .endw

                .if thislnAlrdyWrtn==0		;multiremstorrer

                    push eax
                    push ebx
                    push edx

                    .if varmulr==1

                        ;PrintDec scy
                        mov edx,1

                    .else

                        mov edx,0

                    .endif

                    mov eax,para1
                    mov ebx,scy
                    add ebx,4
                    mov [eax+ebx],edx
                    pop edx
                    pop ebx
                    pop eax
                    .endif				;eo multiremstorrer
                    mov thislnAlrdyWrtn,0

                    .if varsglr==1

                        mov varsglr,0
                        invoke SetTextColor,cdc,0

                    .endif

                    pop edx				;total recall :P
                    pop ecx
                    pop ebx
                    pop eax
                    add vary,15
                    add scy,4
                    mov varx,56
                    pop edx				;argh
                    pop ecx
                    pop ebx
                    pop eax
                    ;inc eax
                    push eax
                    push ebx
                    push ecx
                    push edx			;eo argh

                .endif

                mov eax,para7

                .if examine==0

                    .if vary>eax

                        pop edx				;make die() easyler :P
                        pop ecx
                        pop ebx
                        pop eax
                        jmp eop

                    .endif

                .endif

                pop edx					;total recall :P
                pop ecx
                pop ebx
                pop eax
                inc eax

            .endw

            eop:
            mov eax,para6
            shl eax,3
            mov ebx,para12
            sub ebx,17
            push eax
            invoke Rectangle,cdc,eax,0,ebx,para13
            pop eax
            invoke Rectangle,cdc,0,vary,eax,para13
            invoke Rectangle,cdc,48,0,56,para13

            .if examine==1

                jmp eop2

            .endif

            ;lnumbs - function counts a string
            invoke SetTextColor,cdc,11842740
            mov ecx,para13
            sub ecx,15
            mov ebx,vary
            mov vary,0
            mov edx,para14
            nwln:
            push ebx
            push edx
            push ecx
            invoke TextOut,cdc,0,vary,edx,6
            pop ecx
            pop edx
            add vary,15
            push eax
            mov eax,5

            .while eax>1

                mov bl,[edx+eax]

                .if bl==57

                    .if eax==5

                        mov bl,48
                        mov [edx+eax],bl
                        dec eax
                        mov bl,[edx+eax]
                        inc bl

                        .if bl==33

                            mov bl,49

                        .endif

                        mov [edx+eax],bl

                    .endif

                .else

                    .if eax==5

                        inc bl
                        mov [edx+eax],bl

                    .endif

                .endif

                .if bl==58

                    mov bl,48
                    mov [edx+eax],bl
                    mov bl,[edx+eax-1]
                    inc bl

                    .if bl==33

                        mov bl,49

                    .endif

                    mov [edx+eax-1],bl

                .endif

                dec eax

            .endw

            pop eax
            pop ebx

            .if ebx>vary

                cmp vary,ecx
                jna nwln

            .endif

            ;eo lnumbs
            eop2:
            mov eax,scymem

        asmend

        setscrollpos sbar&,scy&
        return z&4

    endproc

Das Control am Besten in Zeile __loadSrcToMem xprfide7.prf so einstellen das es seinen eigenen Source zeigt.

Habe Scrollbar, ansatzweise Tastatur- und Mausradscrolling bereits umgesetzt. Das Control selbst nutzt keine WindowsControls - es zeigt jeden Buchstaben selbst an.

Salve, iF.
 
12.09.2005  
 



Nachtrag: Und natürlich flimmert nix beim Skalieren des Fensters.

Salve, iF.
 
12.09.2005  
 




Frank
Abbing
Bei mir funktioniert es nicht so reibungslos. Irgendwo landet die Zeile...

_FSIZ&+;

...im Code. Vielleicht durch ältere XPSE-Version?
 
12.09.2005  
 



hm komisch - ich probiers mal selbst mit der aktuell zum download angebotenen xpse-version. mom
 
12.09.2005  
 



Hm nö funzt fehlerfrei.

Hier als Anhang nochmal Beides.

Salve, iF.

56 kB
Kurzbeschreibung: prfide
Hochgeladen:12.09.2005
Ladeanzahl38
Herunterladen
 
12.09.2005  
 




GDL
Hallo Profaner,

seht ihr, diese Probleme hab ich nicht mehr.Ich benutze meinen Dateigenerator, der macht nur das was ich möchte,bekommt nur das was ich möchte(soll meine eierlegende Wollmilchsau werden)hinzu und die Fehler die er hat, kenne ich, und die stören mich somit nicht.
Soll doch jeder, der mit den beigegebenen Editoren nicht zufrieden ist, seinen eigenen Editor machen.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
12.09.2005  
 



Auch wahr.
 
12.09.2005  
 




Rolf
Koch

Soll doch jeder, der mit den beigegebenen Editoren nicht zufrieden ist, seinen eigenen Editor machen.


Dieser Spruch hat mich sehr beeindruckt!
Leider kenne ich es zu gut, dass es Leute (hier Progger) gibt, welche nicht produktive Kritik äussern, sondern versuchen eine Anwendung in Grund und Boden zu reden*. Von diesen Leuten hat man selbst aber nie eine Anwendung kennengelernt.
*Ich kenne dieses Problem bereits aus meiner damaligen Musikerlaufbahn :
Machst Du etwas für Leute, welche genau dasselbe machen wie Du, so verschränken ein paar die Arme und sagen: Ich kann es besser.
Jedoch sieht man dann nie etwas Produktives von diesen vorlauten Menschen. Im Volksmund sagt man dazu NEID.
War immer so, ist so und bleibt so.

RnR
 
12.09.2005  
 




CB
Hi,
wollte mal die PrfIDE ausprobieren, erhalte aber vom XPIA (1.21) die Fehlermeldung:
LINK: fatal error LNK1104: cannot open file Drofanxprofan.lib

Die Datei habe ich auch nirgends.
Könntet Ihr mir da auf die Sprünge helfen?

Danke,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
13.09.2005  
 



Es scheint mir als ob Du den xpia im falschen Ordner hast.

Wenn Dein Profanordner z.B. c:profan ist - dann muß xpia in c:profanxpia liegen. In c:profan jedoch darf keine xpia.exe liegen.

c:profanprfide.prf
c:profanxpse.exe
c:profanprfrun32.exe
c:profanprofancomp.exe
c:profanxpiaxpia.exe

Salve, iF
 
13.09.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

36.310 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang02.01.2018
Oliver10.03.2016
Rainer Hoefs19.07.2015
Peter Max Müller13.05.2015
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