Em qual linha está uma certa String ?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Em qual linha está uma certa String ?

Mensagem por rossine »

Olá,

Estou precisando identificar em qual linha se encontra uma determinada STRING apartir de sua posição identificada através da função "AT()"

Algo assim:

Código: Selecionar todos

function MAIN

local nPos, cString, cArq

cls

cString := "OLA"

cArq := memoread( "meuarquivo.txt" )

nPos := at( cString, cArq )

? nPos

return NIL

Digamos que nPos retorna 3205. Em qual linha fica esta posição ?

Obrigado,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Em qual linha está uma certa String ?

Mensagem por Kapiaba »

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Em qual linha está uma certa String ?

Mensagem por Jairo Maia »

Olá rossine,

O exemplo do Kapiaba pode ser também uma solução, mas em [x]Harbour você pode usar a função MPosToLC(). Veja um exemplo:

Código: Selecionar todos

Function Main()
  Local aRowCol
  Local cTexto:=""
  Local cString:="Linha: 15"
      
  Clear Screen

  For i:=1 To 20
    cTexto += "Linha: " + Hb_NToS( i ) + Hb_Eol()
    ? "Linha: " + Hb_NToS( i )
  Next
      
  nAtResult := At( Upper( cString ), Upper( cTexto ) )

  If nAtResult > 0

    aRowCol := MPosToLC( cTexto, 254, nAtResult )
    ?
    ? aRowCol[ 1 ], aRowCol[ 2 ]             // retorna linha 15, coluna 0
       
    ?
    ? MemoLine( cTexto, 254, aRowCol[ 1 ] )  // retorna Linha: 15
       
  EndIf
       
 Return Nil
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Em qual linha está uma certa String ?

Mensagem por rossine »

Olá,

Kapiaba, Obrigado pelo link :)Pos

Jairo, Obrigado pelo exemplo. Era isto mesmo que eu precisava :-Y
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Responder