Página 1 de 1

Em qual linha está uma certa String ?

Enviado: 02 Dez 2015 10:46
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,

Em qual linha está uma certa String ?

Enviado: 02 Dez 2015 11:11
por Kapiaba

Em qual linha está uma certa String ?

Enviado: 02 Dez 2015 13:28
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

Em qual linha está uma certa String ?

Enviado: 02 Dez 2015 13:50
por rossine
Olá,

Kapiaba, Obrigado pelo link :)Pos

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