Página 1 de 1

Função compativel com ExtractStrings

Enviado: 26 Jun 2014 16:35
por Eros
Existe no clipper 5.2 ou em suas bibliotecas auxiliares alguma função que tem funcionalidade semelhante ou igual a ExtractStrings do delphi ??

ExtractStrings em delhi tem a finalidade de facilitar na importação de um arquivo texto, onde as informações em cada linha são separados por algum caractere (exemplo do sped que usa "|" pipe separando campos de dados).

Alguém saberia informar se existe função similar nas bibliotecas do clipper ??

Obs (A pergunta se refere a clipper, nao harbour)

Função compativel com ExtractStrings

Enviado: 26 Jun 2014 17:01
por alxsts
Olá!

Creio que o mais indicado neste caso é o comando APPEND FROM.

Função compativel com ExtractStrings

Enviado: 26 Jun 2014 17:16
por Eros
Obrigado pela dica.. testando, foi o mais próximo que encontrei mesmo.. mas já ajuda..

Na verdade, é para criar uma rotina de importação de dados do sped fiscal.

Função compativel com ExtractStrings

Enviado: 26 Jun 2014 17:36
por Toledo
Amigos, segue um exemplo do que pode fazer:

Código: Selecionar todos

cText:="Funcao|compativel|com|ExtractStrings"
aRet:=SPLIT(cText,"|")
For i=1 to Len(aRet)
 ? aRet[i]
Next
retu

Function SPLIT(cStr,cDelim)
Local _Var1,_Var2, _aVar3:={}
If (PCount() < 2)
  cDelim:= ","
EndIf
Do While .T.
  _Var2:= At(cDelim,cStr)
  If (_Var2 > 0)
     _Var1:= Left(cStr,_Var2-1)
     cStr:= SubStr(cStr,_Var2+Len(cDelim))
  Else
     _Var1:= cStr
     cStr:=""
  EndIf
  AADD(_aVar3,_Var1)
  If Empt(cStr)
    Exit
  Endif
Enddo
Return _aVar3
Abraços,

Função compativel com ExtractStrings

Enviado: 26 Jun 2014 17:48
por Eros
Valeu Toledo.. muito boa.. obrigado !

Função compativel com ExtractStrings

Enviado: 27 Jun 2014 01:39
por rochinha
Amiguinhos,

Ufahh!! custei para encontrar.

Tempos atrás tinha colocando uma postagem onde tinha uma função que fazia o mesmo que a do Toledo, só que com outra codificação.

Só para registro:

Código: Selecionar todos

function StringToArray( cString, cSeparator )
	LOCAL nPos
	LOCAL aString := {}
	DEFAULT cSeparator := ";"
	cString := ALLTRIM( cString ) + cSeparator
	DO WHILE .T.
	   nPos := AT( cSeparator, cString )
	   IF nPos = 0
	      EXIT
	   ENDIF
	   AADD( aString, SUBSTR( cString, 1, nPos-1 ) )
	   cString := SUBSTR( cString, nPos+1 )
	ENDDO
RETURN ( aString )
A função reversa:

Código: Selecionar todos

function ArrayToString( aArray, cSeparator )
	   LOCAL nPos
	   DEFAULT cSeparator := ";"
	   cString := ""
	   FOR nPos = 1 TO LEN(aArray)
	       cString := cString + aArray[nPos] + cSeparator
	   NEXT
RETURN ( cString )