Visualizar arquivo no video - vai alem 64k

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
digitom
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 06 Abr 2006 13:52
Localização: Anápolis-Go
Contato:

Visualizar arquivo no video - vai alem 64k

Mensagem por digitom »

Compile junto com seu programa.
Para chamar o Editor: Edicao("Nome-arquivo-texto")

Edicao("arquivo.txt")

Código: Selecionar todos

#xtranslate :fileHandle   => :cargo\[1\]
#xtranslate :fileLine     => :cargo\[2\]
#xtranslate :lineOffset   => :cargo\[3\]
#xtranslate FTell(<fHandle>) => FSeek(<fHandle>, 0, 1)

#define FILE_BRWS_NUM_IVARS 3
#define MAX_LINE_LEN  256
#define CR    Chr(13)
#define LF    Chr(10)
#define CRLF  CR + LF
#define SET_IVAR(iVar, p) iif(p == NIL, NIL, iVar := p)
*------------------------------------------------------------------------------*
FUNCTION Edicao(cFname)
LOCAL oTbr, oTbc
LOCAL lExitRequested := .F.
LOCAL cSearcher, nSavefPos
LOCAL nKey
LOCAL GetList := {}
set_pesquisa = 0
cSearcher := Space(20)
  SET SCOREBOARD OFF
  CLEAR SCREEN
  IF cFname == NIL .OR. !File(cFname)
    Alert("Usage: FBTest <cFileName>")
    QUIT
  ENDIF

  @ 23, 0 SAY "[F2] - Procura abaixo [F3] - Procura acima  [F4] - repetir pesquisa"
  @ 0,  0 TO 22, 79
  IF (oTbr := FBrowseNew()) != NIL
    FBrowseOpen(oTbr, cFname)
    oTbr:nTop    := 1
    oTbr:nLeft   := 1
    oTbr:nBottom := 21
    oTbr:nRight  := 78
    oTbc := TBColumnNew(, {|| SubStr(oTbr:fileLine, oTbr:lineOffset) })
    oTbc:width := 78
    oTbr:addColumn(oTbc)
    DO WHILE !lExitRequested
      DO WHILE !oTbr:stabilize()
      ENDDO
      nKey := InKey(0)
      DO CASE
      CASE nKey == 27
        lExitRequested := .T.

      CASE nKey == 19
        IF oTbr:lineOffset > 1
          oTbr:lineOffset--
          oTbr:refreshall()
        ENDIF

      CASE nKey == 4
        IF oTbr:lineOffset < len(oTbr:fileLine)
          oTbr:lineOffset++
          oTbr:refreshall()
        ENDIF

      CASE nKey == 1
        oTbr:lineOffset := 1
        oTbr:refreshall()

      CASE nKey == 6
        oTbr:lineOffset := Max(1, Len(oTbr:fileLine) - ;
                                  oTbc:width + 1)
        oTbr:refreshAll()

      #define TAB_SIZE 10

      CASE nKey == 9
        IF oTbr:lineOffset <= Len(oTbr:fileLine) - TAB_SIZE
          oTbr:lineOffset += TAB_SIZE
          oTbr:refreshAll()
        ENDIF

      CASE nKey == 271
        oTbr:lineOffset := MAX(1, oTbr:lineOffset - TAB_SIZE)
        oTbr:refreshall()

      CASE nKey == -1
        @ 24, 0
        @ 24, 10 SAY "Entre com o texto" GET cSearcher
        READ
        @ 24, 0
        IF FrwdSrch(oTbr, Trim(cSearcher))
          oTbr:refreshAll()
        ELSE
          Alert("Nao encontrado", {"OK"}, "B/W, W/B")
        ENDIF
        set_pesquisa = -1

      CASE nKey == -2
        @ 24, 0
        @ 24, 10 SAY "Entre com o texto" GET cSearcher
        READ
        @ 24, 0
        IF BkwdSrch(oTbr, Trim(cSearcher))
          nSavefPos := FilePos(oTbr)
          oTbr:refreshAll()
          DO WHILE !oTbr:stabilize()
          ENDDO

          // Ensure same line selected
          DO WHILE FilePos(oTbr) != nSavefPos
            oTbr:up()
            DO WHILE !oTbr:stabilize()
            ENDDO
          ENDDO
        ELSE
          Alert("Nao encontrado", {"OK"}, "B/W, W/B")
        ENDIF
        set_pesquisa = -2

      case nkey == -3
        do case
          case set_pesquisa = 0
            alert("Nao foi efetuado nenhuma pesquisa",{"OK"}, "B/W, W/B")
            loop
          case set_pesquisa = -1
            IF FrwdSrch(oTbr, Trim(cSearcher))
              oTbr:refreshAll()
            ELSE
             Alert("Nao encontrado", {"OK"}, "B/W, W/B")
            ENDIF
          case set_pesquisa = -2
           IF BkwdSrch(oTbr, Trim(cSearcher))
             nSavefPos := FilePos(oTbr)
             oTbr:refreshAll()
             DO WHILE !oTbr:stabilize()
             ENDDO
             DO WHILE FilePos(oTbr) != nSavefPos
               oTbr:up()
               DO WHILE !oTbr:stabilize()
               ENDDO
             ENDDO
           ELSE
             Alert("Nao encontrado", {"OK"}, "B/W, W/B")
           ENDIF
        endcase


      OTHERWISE
        IF StdMeth(oTbr, nKey)
          //  Handled as standard key
        ELSE
          // Otherwise ignore
        ENDIF
      ENDCASE
    ENDDO

    CLEAR SCREEN
  ENDIF
RETURN NIL
*------------------------------------------------------------------------------*
FUNCTION FilePos(oTbr)
RETURN FTell(oTbr:fileHandle)
*------------------------------------------------------------------------------*
FUNCTION FBrowseNew
LOCAL oTbr := TBrowseNew()
  oTbr:cargo := Array(FILE_BRWS_NUM_IVARS)
  oTbr:lineOffset := 1

  oTbr:goTopBlock    := {| | FileGoFirst(oTbr) }
  oTbr:goBottomBlock := {| | FileGoLast(oTbr)  }
  oTbr:skipBlock     := {|n| FileSkip(n, oTbr) }

RETURN oTbr
*------------------------------------------------------------------------------*
FUNCTION FBrowseOpen(oTbr, cFileName)
LOCAL fHandle := FOpen(cFileName)

  IF fHandle >= 0
    oTbr:fileHandle := fHandle
    FileGoFirst(oTbr)
  ENDIF

RETURN fHandle > 0
*------------------------------------------------------------------------------*
PROCEDURE FileBrowseClose(oTbr)
FClose(oTbr:filehandle)
RETURN

// Go to first line in file, and read it into oTbr:fileLine
*------------------------------------------------------------------------------*
STATIC PROCEDURE FileGoFirst(oTbr)
LOCAL cLine
LOCAL fHandle := oTbr:fileHandle
  FSeek(fHandle, 0, 0)
  FReadLn(fHandle, @cline, MAX_LINE_LEN)
  cline = strtran(cline,chr(12) + chr(13),chr(13) + chr(10))



  oTbr:fileLine := cLine
  FSeek(fHandle, 0, 0)

RETURN
// Go to last line in file, and read into oTbr:fileLine
*------------------------------------------------------------------------------*
STATIC PROCEDURE FileGoLast(oTbr)
  FSeek(oTbr:fileHandle, 0, 2)
  GoPrevLn(oTbr)

RETURN


// Skip n lines in the file. n can be positive or negative.
// Return how many skipped.
*------------------------------------------------------------------------------*
STATIC FUNCTION FileSkip(n, oTbr)
LOCAL nSkipped := 0
  IF n > 0
    DO WHILE nSkipped != n .AND. GoNextLn(oTbr)
      nSkipped++
    ENDDO
  ELSE
    DO WHILE nSkipped != n .AND. GoPrevLn(oTbr)
      nSkipped--
    ENDDO
  ENDIF

RETURN nSkipped


// Attempt to move to the next line in the file
// Return .T. if successful, .F. otherwise

// Needs to be public for search routine
*------------------------------------------------------------------------------*
FUNCTION GoNextLn(oTbr)
LOCAL fHandle := oTbr:fileHandle
LOCAL nSavePos := FTell(fHandle), ;
      cBuff := "", lMoved, nNewPos

  FSeek(fHandle, Len(oTbr:fileLine) + 2, 1)
  nNewPos := FTell(fHandle)
  IF FReadLn(fHandle, @cBuff, MAX_LINE_LEN)
    lMoved := .T.
    oTbr:fileLine := cBuff
    FSeek(fHandle, nNewPos, 0)
  ELSE
    lMoved := .F.
    FSeek(fHandle, nSavePos, 0)
  ENDIF

RETURN lMoved

// Needs to be public for search routines
*------------------------------------------------------------------------------*
FUNCTION GoPrevLn(oTbr)
LOCAL fHandle := oTbr:fileHandle
LOCAL nOrigPos := FTell(fHandle), nMaxRead, nNewPos, ;
          lMoved, cBuff, nWhereCrLf, nPrev, cTemp

  IF nOrigPos == 0
    lMoved := .F.
  ELSE
    lMoved := .T.
    //  Check preceeding 2 chars for CR / LF
    FSeek(fHandle, -2, 1)
    cTemp := Space(2)
    FRead(fHandle, @cTemp, 2)
    IF cTemp == CRLF
      FSeek(fHandle, -2, 1)
    ENDIF
    nMaxRead := MIN(MAX_LINE_LEN, FTell(fHandle))

    cBuff := Space(nMaxRead)
    nNewPos := FSeek(fHandle, -nMaxRead, 1)
    FRead(fHandle, @cBuff, nMaxRead)
*    cbuff = strtran(cbuff,chr(12) + chr(13),chr(13) + chr(10))
    nWhereCrLf := Rat(CRLF, cBuff)
    IF nWhereCrLf == 0
      nPrev := nNewPos
      oTbr:fileLine := cBuff
    ELSE
      nPrev := nNewPos + nWhereCrLf + 1
      oTbr:fileLine := SubStr(cBuff, nWhereCrLf + 2)
    ENDIF

    FSeek(fHandle, nPrev, 0)
  ENDIF

RETURN lMoved


// Return whether found or not - search forwards
// If found, cLine is set to current line and file pointer
// is at its start
// If not found, file pointer remains untouched
*------------------------------------------------------------------------------*
FUNCTION FrwdSrch(oTbr, cString)
LOCAL fHandle := oTbr:fileHandle
LOCAL lFound := .F.
LOCAL nSavePos := FTell(oTbr:fileHandle)
LOCAL cSavecLine := oTbr:fileLine

  DO WHILE !lFound .AND. GoNextLn(oTbr)
    lFound := cString $ oTbr:fileLine
  ENDDO

  IF !lFound
    FSeek(fHandle, nSavePos, 0)
    oTbr:fileLine := cSavecLine
  ENDIF

RETURN lFound


// Return whether found or not - search backwards
// If found, cLine is set to current line and file pointer
// is at its start
// If not found, file pointer remains untouched
*------------------------------------------------------------------------------*
FUNCTION bkwdSrch(oTbr, cString)
LOCAL lFound := .F.
LOCAL fHandle := oTbr:fileHandle
LOCAL nSavePos := FTell(fHandle)
LOCAL cSavecLine := oTbr:fileLine
  DO WHILE !lFound .AND. GoPrevLn(oTbr)
    lFound := cString $ oTbr:fileLine
  ENDDO

  IF !lFound
    FSeek(fHandle, nSavePos, 0)
    oTbr:fileLine := cSavecLine
  ENDIF

RETURN lFound
*------------------------------------------------------------------------------*
FUNCTION FReadLn(fHandle, cBuffer, nMaxLine)
LOCAL cLine, nEol, nNumRead, nSavePos
  cLine   := Space(nMaxLine)
  cBuffer := ""

  // Save current file position for later seek
  nSavePos := FTell(fHandle)

  nNumRead := FRead(fHandle, @cLine, nMaxLine)

  IF (nEol := At(CRLF, SubStr(cLine, 1, nNumRead))) == 0
    cBuffer := cLine                     // Line overflow or eof
  ELSE
    cBuffer := SubStr(cLine, 1, nEol - 1)  // Copy up to eol

    // Now position file to next line (skip lf) ...
    FSeek(fHandle, nSavePos + nEol + 1, 0)

  ENDIF

RETURN nNumRead != 0        // If last read didn't suceed, eof
*------------------------------------------------------------------------------*
FUNCTION StdMeth(oTbr, nKey)
LOCAL lKeyHandled := .T.
  DO CASE
    CASE nKey == 24     ;  oTbr:down()
    CASE nKey == 05     ;  oTbr:up()
    CASE nKey == 03     ;  oTbr:pageDown()
    CASE nKey == 18     ;  oTbr:pageUp()
    CASE nKey == 31     ;  oTbr:goTop()
    CASE nKey == 30     ;  oTbr:goBottom()
    CASE nKey == 04     ;  oTbr:right()
    CASE nKey == 19     ;  oTbr:left()
    CASE nKey == 01     ;  oTbr:home()
    CASE nKey == 06     ;  oTbr:end()
    CASE nKey == 26     ;  oTbr:panLeft()
    CASE nKey == 02     ;  oTbr:panRight()
    CASE nKey == 29     ;  oTbr:panHome()
    CASE nKey == 23     ;  oTbr:panEnd()
    OTHERWISE;             lKeyHandled := .F.
  ENDCASE
RETURN lKeyHandled
*------------------------------------------------------------------------------*
FUNCTION MemoBlock(nFieldNum)
RETURN {|nMode| iif(nMode == NIL, ;
                    "Memo", ;
                    FieldBlock(Field(nFieldNum))) }


// Repeatedly call stabilize until it returns .T., ensuring the same
// record is highlighted (for database edits)
*------------------------------------------------------------------------------*
PROC DbStabilize(oTbr)
LOCAL nSaveRecno := recno()
  oTbr:refreshAll()
  DO WHILE !oTbr:stabilize()
  ENDDO

  DO WHILE recno() != nSaveRecno
    oTbr:up()
    DO WHILE !oTbr:stabilize()
    ENDDO
  ENDDO

RETURN
*-----------------*
* fim do programa *
*-----------------*



Boa Sorte
Fui :)
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem por clebermano »

beleza obrigado caro amigo.
sua contribuicao eh mto importante ao forum.
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
cl@udio
Usuário Nível 2
Usuário Nível 2
Mensagens: 88
Registrado em: 25 Jan 2007 16:47

Compilar xHarbour

Mensagem por cl@udio »

Sabe o q e necessario para compilar em xHarbour.
Eu compilei mas parece que nao ve o final de cada linha.
Obs. Para linux.
[] claudio
Editado pela última vez por cl@udio em 10 Jul 2007 11:23, em um total de 1 vez.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, eu uso no xharbour e comigo esta saindo Tudo certinho....

De mais detalhe do que não esta saindo certo.....alias...abra um novo topico..aqui é seção de CODIGOS FONTES.....


Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Visualizar arquivo no video - vai alem 64k

Mensagem por fladimir »

Olá Colegas, não quis abrir novo tópico pq na verdade o problema ocorre dentro desta função, qdo eu pressiono ENTER e estou visualizando um relatório o Processamento vai nas nuvens, testei em vários maquinas XP, Win7, Vista e tudo igual.

Tipo se vc esta usando o sistema normalmente o processamento é menor q 2%, agora qdo gero um arquivo e visualizo com esta função o processamento fika superior a 50% constantemente e oscilando entre 50% e 100%, sobrecarregando a máquina.

Alguém sabe o q pode ser ou passou por algo parecido?

Sds.
Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Visualizar arquivo no video - vai alem 64k

Mensagem por sygecom »

Isso é com clipper ou xHarbour ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Visualizar arquivo no video - vai alem 64k

Mensagem por fladimir »

Leonardo estou utilizando:

Harbour 2.1.0beta2 (Rev. 15281) | MSVC | DBF | CDX

Sds.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Visualizar arquivo no video - vai alem 64k

Mensagem por alxsts »

Olá!

De volta às velhas e boas rotinas do Rick Spence...
cl@udio escreveu:Eu compilei mas parece que nao ve o final de cada linha. Obs. Para linux.
Só para não ficar sem resposta:
no Unix/Linux o separador de linha é só o Chr(10) LF e não o Crh(13)+Chr(10) CR+LF. Tem que modificar o tratamento. No xHarbour tem uma função que retorna isso, conforme a plataforma: HB_OsNewLine()
fladimir escreveu:o Processamento vai nas nuvens
Provavelmente é o Inkey(0). Tente trocar por Inkey(.2) e veja se melhora a performance.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Visualizar arquivo no video - vai alem 64k

Mensagem por fladimir »

Deu certo, era o Inkey(0) q troquei conforme o AlxSts sugeriu....

Obrigado colegas....

Sds...

:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Visualizar arquivo no video - vai alem 64k

Mensagem por lugab »

Oi Fladimir,

Faça-nos a gentileza de repostar esse código com a correção q vc promoveu, pra tornar o código operacional...

Desejo testar ele...

Grato,

Gabriel
lugab
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Visualizar arquivo no video - vai alem 64k

Mensagem por alxsts »

Olá!

Nem precisa postar novamente. Na linha 42, troque

Código: Selecionar todos

nKey := InKey(0) por nKey := InKey(.2)
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Visualizar arquivo no video - vai alem 64k

Mensagem por fladimir »

Foi o q eu fiz, o codigo esta acima, só troquei conforme o colega mostrou.

Sds.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Visualizar arquivo no video - vai alem 64k

Mensagem por Maligno »

É até possível que a alta do consumo de tempo de CPU diminua sem alterar o InKey(0), até porque esse zero pode ter alguma finalidade especial, que se perde com o valor 0,2 que o colega alxsts sugeriu. Se o compilador for o Clipper, mesmo com a troca do argumento do InKey() resolvendo o problema, é possível que ele esteja relacionado ao problema que o garbage collector do Clipper tem. Então, pra resolver o caso talvez seja melhor embutir nesse fonte uma chamada à função Memory(-1), que faz a limpeza do lixo e reorganiza a memória; e também utilizar a função FreeTSlice() para desligar o recurso nativo do Clipper.

Aliás, se quiserem testar mais um recurso de manipulação de arquivos grandes: https://pctoledo.org/forum/viewto ... 43&t=11703.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Visualizar arquivo no video - vai alem 64k

Mensagem por alxsts »

Olá!
Maligno escreveu:...até porque esse zero pode ter alguma finalidade especial
Como sabemos, Inkey(n) aguarda n segundos pela digitação de alguma tecla e sai quando o tempo acaba, desde que n seja maior que 0. Se n = 0, aguarda até que algo seja digitado. No Clipper, isso levava o processador a 100% de carga. Com o FreeTSlice() ou similares, o problema foi resolvido.

O que achei estranho neste tópico é o fato de o Fladimir ter escrito que está usando Harbour. Pensei que no Harbour isso tivesse sido resolvido. Nem sei se no Harbour se pode usar FreeTSlice().

Assim, sugerí o Inkey(.2) onde após 2 décimos de segundo o processador é liberado para outras atividades e depois o teste é refeito pois está dentro de um laço.

Concordo que deva existir solução melhor...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Visualizar arquivo no video - vai alem 64k

Mensagem por Maligno »

O tópico ficou meio confuso na aplicação da coisa, mas minha dica serve para Clipper, caso alguém precise. E não, a função FreeTSlice() não pode ser utilizada diretamente no [x]Harbour.

Realmente, mudar o argumento de Inkey() para fazer a coisa andar normalmente é meio esquisito. Ademais, sendo [x]Harbour, o processamento não deveria ter subido tanto como o colega relatou. Mais esquisito ainda.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder