ARRAY - Função que transforma string demilitada em vetor

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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

ARRAY - Função que transforma string demilitada em vetor

Mensagem por rochinha »

Amiguinho

Esta função quebra o galho para criação de vetores, vi algo parecido no VB e encontrei esta em algum lugar vasculhando meus .PRGs.

Para usar basta passar a string contendo os valores separados por um delimitador qualquer, exemplo:

aMeuVetor := StringToArray( "O|Rochinha|e|um|prego", "|" )

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 )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JLF
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Jul 2005 12:52
Localização: Sao Paulo

Re: ARRAY - Função que transforma string demilitada em vetor

Mensagem por JLF »

Rochinha,

Estou tentando importar um txt sem padrão de tamanho, mas com delimitadores ";" , para o dbf poderia exemplificar como posso fazer uso dessa sua função aqui ?

Abraços!
JLF - relembrando bons tempos
Clipper 5.3 - Blinker 7
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A função do amigo Rochinha não vai resolver aquele problema que você relatou em outro tópico. Não totalmente. Você terá de fazer por partes. A função dele pegaria uma linha daquele seu arquivo (um registro) e colocaria cada campo num elemento da matriz devolvida. Mas você terá de separar as linhas manualmente. Ou, opcionalmente, modificar a função dele para já separar as linhas e retornar uma matriz multidimensional com todo o conteúdo do seu arquivo. Seria bem melhro. Só não se esqueça que o Clipper tem um limite para matrizes.
[]'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!
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

ARRAY - Função que transforma string demilitada em vetor

Mensagem por Vlademiro »

:)Pos

Obrigado. Realmente essa função é muito útil.

Comigo funcionou com as seguintes alterações :

No início
#include "common.ch"

O comando DEFAULT foi alterado para
DEFAULT cSeparator TO ";"
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

ARRAY - Função que transforma string demilitada em vetor

Mensagem por sambomb »

Se usar xHarbour pode usar o HB_ATokens

Código: Selecionar todos

//HB_ATokens(cString,[cDelimiter],[lSkipQuotes],[lDoubleQuotesOnly])

//-- Quebrar o conteúdo de um txt a cada quebra de linha CRLF
aLinhas := HB_aTokens( MemoRead("C:\Arquivo.TXT"), Chr(13)+Chr(10) )
Imagem

Rca Sistemas - Itaocara - RJ
Responder