Ayuda Al compilar pe.prg de samples de xharbour

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby Antonio Linares » Sun Nov 30, 2014 7:13 am

Ruben,

Publica aqui el código de editorhi.PRG, gracias

En el método New() parece que se le intenta restar un número a un puntero.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby ruben Dario » Sun Nov 30, 2014 1:58 pm

Antonio Linares wrote:Ruben,

Publica aqui el código de editorhi.PRG, gracias

En el método New() parece que se le intenta restar un número a un puntero.


Aquí esta todo el código.
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1069
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby ruben Dario » Sun Nov 30, 2014 2:08 pm

ruben Dario wrote:
Antonio Linares wrote:Ruben,

Publica aqui el código de editorhi.PRG, gracias

En el método New() parece que se le intenta restar un número a un puntero.


Aquí esta todo el código

[url]
https://www.dropbox.com/s/hggzhwmh9m57b ... e.rar?dl=0
[/url]
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1069
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby Antonio Linares » Sun Nov 30, 2014 2:12 pm

Ruben,

Este código que deseas usar para que es ?

Que funcionalidad es la que buscas ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby ruben Dario » Sun Nov 30, 2014 7:05 pm

Antonio Linares wrote:Ruben,

Este código que deseas usar para que es ?

Que funcionalidad es la que buscas ?


Solamente quería comparar con el que maneja clipper, ya que los encontré en los ejemplos de xharbour.
Ya que tengo una aplicación de clipper que emigre a xharbour , y quería ver la funcionalidad de este editor.
mientras emigro a FWH. dicha aplicación.

Según veo el código estas funciones están definidas editorlo.c, no se porque no las toma.
aquí esta en el trozo de código, pero tiene una definición #ifdef mc51,


/*
**
*/
#ifdef mc51
CLIPPER_ACTION( HB_ED_PUSH )
{
int i;

i =0;
while( i < 5 && EStack[i] )
i++;

EStack[ i ] =ED;
}

CLIPPER_ACTION( HB_ED_POP )
{
int i;

i =0;
while( i < 5 && EStack[i] )
i++;

if( i )
{
ED =EStack[ i-1 ];
EStack[ i-1 ] =NULL;
}
}
#endif
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
User avatar
ruben Dario
 
Posts: 1069
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby Antonio Linares » Sun Nov 30, 2014 7:40 pm

Ruben,

FWH te ofrece varios editores. El más potente es scintilla.

Tienes un ejemplo en FWH\samples\sciedit.prg
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby karinha » Mon Dec 01, 2014 12:47 pm

Hola, donde puedo descargar el editor de texto PE.exe en modo consola, para probar?

Gracias, saludos.
Last edited by karinha on Mon Dec 01, 2014 1:07 pm, edited 1 time in total.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby cnavarro » Mon Dec 01, 2014 1:05 pm

Code: Select all  Expand view

/***
*
*   Pe.prg
*
*  Simple program editor in Clipper.
*
*  Copyright (c) 1993, Computer Associates International, Inc.
*  All rights reserved.
*
*  Compile:    CLIPPER pe /n/w/m
*  Link:       RTLINK FILE pe
*  Execute:    pe <file>
*
*/


#include "inkey.ch"
#include "setcurs.ch"
#include "memoedit.ch"


/* key defs for pe */
#define EK_WRITE K_ALT_W
#define EK_QUIT  K_ESC
#define EK_WQUIT K_CTRL_W


/* structure used to contain information about edit in progress */
#define ES_TOP      1
#define ES_LEFT     2
#define ES_BOTTOM   3
#define ES_RIGHT    4

#define ES_FILE     5
#define ES_TEXT     6

#define ES_WIDTH    7
#define ES_TABSIZE  8
#define ES_SCROLL   9
#define ES_WRAP     10
#define ES_INS      11

#define ES_ROW      12
#define ES_COL      13
#define ES_RELROW   14
#define ES_RELCOL   15

#define ES_CHANGED  16
#define ES_LASTKEY  17

#define ES_PATTERN  18

#define ES_LENGTH   18


#define NextTab(y, z)   ( ( (y) + z ) - ( (y) % z ) )


/* static vars scope to entire module */
static aEdit
static nMaxRow
static nMaxCol
static nStatCol


****
*   pe()
*

func pe(cFile)
local nKey, lDone, cScreen

    Set(_SET_BELL, .f.)
    Set(_SET_SCOREBOARD, .f.)
    SetKey(K_F1, NIL)

    if ( IsColor() )
        SetColor("w+/b, b/w, b")
    else
        SetColor("w/n, n/w")
    end

    if ( Empty(cFile) )
        cFile := "untitled"
    elseif ( Rat(".", cFile) <= Rat("\", cFile) )
        cFile := cFile + "
.prg"
    end

    nMaxRow := Maxrow()
    nMaxCol := Maxcol()
    nStatCol := nMaxCol - 19

    /* create the edit structure */
    aEdit               := Array(ES_LENGTH)
    aEdit[ES_FILE]      := Lower(cFile)
    aEdit[ES_TEXT]      := MemoRead(cFile)

    aEdit[ES_TOP]       := 0
    aEdit[ES_LEFT]      := 0
    aEdit[ES_BOTTOM]    := nMaxRow - 2
    aEdit[ES_RIGHT]     := nMaxCol

    aEdit[ES_WIDTH]     := 132
    aEdit[ES_TABSIZE]   := 4
    aEdit[ES_SCROLL]    := .f.
    aEdit[ES_WRAP]      := .t.
    aEdit[ES_INS]       := Set(_SET_INSERT)

    aEdit[ES_ROW]       := 1
    aEdit[ES_COL]       := 0
    aEdit[ES_RELROW]    := 0
    aEdit[ES_RELCOL]    := 0

    aEdit[ES_CHANGED]   := .f.
    aEdit[ES_LASTKEY]   := 0

    aEdit[ES_PATTERN]   := "
"

    cScreen := SaveScreen(0, 0, nMaxRow, nMaxCol)
    cls

    @ nMaxRow - 1, 0 TO nMaxRow - 1, nMaxCol
    Msg( "
File: " + aEdit[ES_FILE] )
    lDone := .f.


    while (!lDone)
        DoEditing()

        nKey := aEdit[ES_LASTKEY]

        do case
        case (nKey == K_ALT_S)
            Search()

        case (nKey == K_ALT_A)
            SearchAgain()

        case (nKey == EK_WRITE)
            EditWrite()

        case (nKey == EK_QUIT)
            lDone := PExit()

        case (nKey == EK_WQUIT)
            EditWrite()
            lDone := PExit()

        otherwise
        end

    end

    if ( IsColor() )
        SetColor("
,,n")
    end

    RestScreen(0, 0, nMaxRow, nMaxCol, cScreen)
    @ nMaxRow, nMaxCol SAY "
"

return (NIL)


****
*   DoEditing()
*

func DoEditing()

    aEdit[ES_WRAP] := .t.
    aEdit[ES_TEXT] := MemoEdit( aEdit[ES_TEXT],     ;
                                aEdit[ES_TOP],      ;
                                aEdit[ES_LEFT],     ;
                                aEdit[ES_BOTTOM],   ;
                                aEdit[ES_RIGHT],    ;
                                .t., "
ufunc",       ;
                                aEdit[ES_WIDTH],    ;
                                aEdit[ES_TABSIZE],  ;
                                aEdit[ES_ROW],      ;
                                aEdit[ES_COL],      ;
                                aEdit[ES_RELROW],   ;
                                aEdit[ES_RELCOL]    ;
                              )

return (NIL)


****
*   Prompt()
*

func Prompt(cSay, cGet)
local getList := {}, bInsSave, bAltISave

    bInsSave := SetKey(K_INS, {|| SetCursor(if( Set(_SET_INSERT,            ;
                                                !Set(_SET_INSERT) ),        ;
                                                SC_NORMAL, SC_INSERT) ) }   ;
                      )

    bAltISave := SetKey(K_ALT_I, SetKey(K_INS))

    Msg(Space(nStatCol))
    @ nMaxRow,0 SAY cSay    ;
                GET cGet    ;
                Picture "
@KS" + Ltrim(Str(nStatCol - (Len(cSay) + 2)))
    READ

    SetKey(K_INS, bInsSave)
    SetKey(K_ALT_I, bAltISave)
    aEdit[ES_INS] := Set(_SET_INSERT)

return (cGet)


****
*   NewName()
*

func NewName()
local name

    name := Prompt("
Enter new output file name:", PadR(aEdit[ES_FILE], 64))
    name := Lower(Ltrim(Rtrim(name)))
    if ( !Empty(name) .and. name != aEdit[ES_FILE] )
        aEdit[ES_FILE] := name
        aEdit[ES_CHANGED] := .t.
    end

    Msg("
File: " + aEdit[ES_FILE])

return (NIL)


****
*   xSearch()
*

func xSearch(x)
local nRow, pos, offset, newcol, a

    if ( !Empty(aEdit[ES_PATTERN]) )
        nRow := aEdit[ES_ROW]
        pos := x + MLCToPos(aEdit[ES_TEXT],     ;
                            aEdit[ES_WIDTH],    ;
                            aEdit[ES_ROW],      ;
                            aEdit[ES_COL],      ;
                            aEdit[ES_TABSIZE],  ;
                            aEdit[ES_WRAP]      ;
                           )

        offset := pos + At(aEdit[ES_PATTERN],Substr(aEdit[ES_TEXT], pos)) - 1
        if ( offset >= pos )
            a := MPosToLC(aEdit[ES_TEXT],   ;
                          aEdit[ES_WIDTH],  ;
                          offset,           ;
                          aEdit[ES_TABSIZE],;
                          aEdit[ES_WRAP]    ;
                         )

            aEdit[ES_ROW] := a[1]
            newcol := a[2]
            aEdit[ES_RELCOL] := aEdit[ES_RELCOL] + newcol - aEdit[ES_COL]
            aEdit[ES_COL] := newcol

            if ( aEdit[ES_ROW] - nRow <=                                ;
                 aEdit[ES_BOTTOM] - aEdit[ES_TOP] - aEdit[ES_RELROW]    ;
               )

                aEdit[ES_RELROW] := aEdit[ES_RELROW] + aEdit[ES_ROW] - nRow

            end

            Msg("
Search completed.")

        else
            Msg("
Pattern not found.")
        end
    else
        Msg("
")
    end

return (NIL)


****
*   Search()
*

func Search()
local pattern

    pattern := Prompt("
Search for:", PadR(aEdit[ES_PATTERN], 64))
    pattern := Ltrim(Rtrim(pattern))
    if ( !Empty(pattern) )
        aEdit[ES_PATTERN] := pattern
        xSearch(0)
    else
        Msg("
")
    end

return (NIL)


****
*   SearchAgain()
*

func SearchAgain()
return (xSearch(1))


****
*   ufunc()
*

func ufunc(nMode, nLine, nCol)
local nKey

    aEdit[ES_LASTKEY]   := nKey := LastKey()
    aEdit[ES_ROW]       := nLine
    aEdit[ES_COL]       := nCol
    aEdit[ES_RELROW]    := Row() - aEdit[ES_TOP]
    aEdit[ES_RELCOL]    := Col() - aEdit[ES_LEFT]


    if (nMode == ME_INIT)
        if (aEdit[ES_WRAP])
            /* turn off word wrap */
            aEdit[ES_WRAP] := .f.
            return (ME_TOGGLEWRAP)  /* NOTE */
        end

        SetCursor( if(aEdit[ES_INS], SC_INSERT, SC_NORMAL) )

    elseif (nMode == ME_IDLE)
        StatMsg()

    else
        /* keystroke exception */
        if (nMode == ME_UNKEYX)
            aEdit[ES_CHANGED] := .t.
        end

        do case
        case (nKey == K_F1)
            DisplayHelp()

        case (nKey == K_ALT_H)
            DisplayHelp()

        case (nKey == K_ALT_F)
            Msg( "
File: " + aEdit[ES_FILE] )

        case (nKey == K_ALT_O)
            NewName()

        case (nKey == K_INS)
            aEdit[ES_INS] := !Set(_SET_INSERT)
            SetCursor( if(aEdit[ES_INS], SC_INSERT, SC_NORMAL) )
            return (nKey)

        case (nKey == K_ALT_I)
            aEdit[ES_INS] := !Set(_SET_INSERT)
            SetCursor( if(aEdit[ES_INS], SC_INSERT, SC_NORMAL) )
            return (K_INS)

        case (nKey == K_ALT_S)
            /* search */
            return (K_CTRL_W)

        case (nKey == K_ALT_A)
            /* search again */
            return (K_CTRL_W)

        case (nKey == K_ALT_X)
            aEdit[ES_LASTKEY] := EK_QUIT
            return (K_CTRL_W)

        case (nKey == EK_QUIT)
            return (K_CTRL_W)

        case (nKey == EK_WRITE)
            return (K_CTRL_W)

        otherwise
        end
    end

return (0)



****
*   EditWrite()
*

func EditWrite()
local lRet

    lRet := .t.
    if ( aEdit[ES_CHANGED] )
        Msg( "
Writing " + aEdit[ES_FILE] )

        if ( MemoWrit(aEdit[ES_FILE], aEdit[ES_TEXT]) )
            Msg("
Write OK")
            aEdit[ES_CHANGED] := .f.

        else
            Msg("
Write error")
            lRet := .f.

        end
    else
        Msg("
File has not been modified -- not written.")

    end

return (lRet)


****
*   Msg()
*

func Msg(text)
static oldLength := 0

    if (oldLength != 0)
        @ nMaxRow, 0 SAY Replicate("
", oldLength)
    end

    @ nMaxRow, 0 SAY text
    oldLength := Len(text)

return (NIL)


****
*   StatMsg()
*

func StatMsg()
local cLine, cCol, nCtype, nRow, nCol

    cLine := PadR( LTrim(Str(aEdit[ES_ROW])), 6 )
    cCol := LTrim( Str(aEdit[ES_COL]) )

    nCtype := SetCursor(0)
    nRow := Row()
    nCol := Col()
    @ nMaxRow, nStatCol SAY "
Line: " + cLine + "Col: " + cCol + "  "
    DevPos(nRow, nCol)
    SetCursor(nCtype)

return (NIL)


****
*   PExit()
*

func PExit()
local c, lRet, nCtype

    lRet = .t.
    if ( aEdit[ES_CHANGED] )
        nCtype := SetCursor(SC_NORMAL)

        Msg("
Abandon " + aEdit[ES_FILE] + " [ynw]?" )
        while ( !((c := Upper(Chr(InKey(0)))) $ ("
YNW" + Chr(K_ESC))) )
        end

        if ( c == "
W" )
            lRet := EditWrite()

        else

            if ( c != "
Y" )
                lRet := .f.
            end

            Msg("
")
        end

        SetCursor(nCtype)

    end

return (lRet)


****
* DisplayHelp()
*

func DisplayHelp()
local cScreen := SaveScreen(0, 0, MaxRow(), MaxCol()), nCtype

    cls
    @ 0, 1 say "
PE Help"
    @ 1, 0 to nMaxRow - 1, nMaxCol
    @ 2, 2 say "
Uparrow/Ctrl-E          Line up           ³ Alt-H, F1    Display Help screen "
    @ 3, 2 say "
Dnarrow/Ctrl-X          Line down         ³ Ctrl-W       Save and exit       "
    @ 4, 2 say "
Leftarrow/Ctrl-S        Char left         ³ Alt-W        Save and continue   "
    @ 5, 2 say "
Rightarrow/Ctrl-D       Char right        ³ Alt-O        New Output filename "
    @ 6, 2 say "
Ctrl-Leftarrow/Ctrl-A   Word left         ³ Alt-X, Esc   Exit                "
    @ 7, 2 say "
Ctrl-Rightarrow/Ctrl-F  Word right        ³ Alt-F        Display Filename    "
    @ 8, 2 say "
Home                    Beginning of line ³ Alt-S        Search              "
    @ 9, 2 say "
End                     End of line       ³ Alt-A        Search Again        "
    @ 10,2 say "
Ctrl-Home               Top of window     ³ Alt-I, Ins   Toggle Insert mode  "
    @ 11,2 say "
Ctrl-End                End of window     ³ "
    @ 12,2 say "
PgUp                    Previous window   ³ "
    @ 13,2 say "
PgDn                    Next window       ³ "
    @ 14,2 say "
Ctrl-PgUp               Top of file       ³ "
    @ 15,2 say "
Ctrl-PgDn               End of file       ³ "
    @ 16,2 say "
Return                  Begin next line   ³ "
    @ 17,2 say "
Delete                  Delete char       ³ "
    @ 18,2 say "
Backspace               Delete char left  ³ "
    @ 19,2 say "
Tab                     Insert tab/spaces ³ "
    @ 20,2 say "
Ctrl-Y                  Delete line       ³ "
    @ 21,2 say "
Ctrl-T                  Delete word right ³ "
    @ 22,2 say "
                                         ³ "

    @ nMaxRow, 1 say "
Press any key to return to the edit screen..."

    nCtype := SetCursor(SC_NORMAL)
    Inkey(0)
    SetCursor(nCtype)

    RestScreen(0, 0, nMaxRow, nMaxCol, cScreen)
 
return (NIL)



Tengo construido para 32 bits el DBU de Clipper, por si alguien lo necesita
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby karinha » Mon Dec 01, 2014 1:21 pm

Lo tengo: muy limitado. no me sirve para nada.

Code: Select all  Expand view

C:\clipper5\BIN

04/03/1993  05:20           217.088 PE.EXE
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7805
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ayuda Al compilar pe.prg de samples de xharbour

Postby Antonio Linares » Tue Dec 02, 2014 7:21 am

Prueba esta función de FWH que te gustará :-)

function SourceEdit( cSource, cTitle, nClrBack ) // @Source by reference
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 72 guests