GARANTIR DESCONTO

Fórum Busca em um arquivo de texto. #355670

19/03/2008

0

Bem pessoal não estou conseguindo separar uma parte de um arquivo de texto

[color=red:e014f61836][b:e014f61836]Arquivo de texto:[/b:e014f61836][/color:e014f61836]
501#
Poção feita de ervas vermelhas. Recupera ^000088cerca de 45 HP^000000, 
dependendo da sua vitalidade. ^0000FFDê um clique duplo neste item para 
recuperar alguns HP.^000000
^ffffff_^000000
Peso : ^7777777^000000

502
Poção feita de ervas vermelhas e amarelas. Recupera ^000088cerca de 105 HP^000000, dependendo da sua vitalidade.
^ffffff_^000000
Peso : ^77777710^000000

503
Poção feita de ervas amarelas. Recupera ^000088cerca de 175 HP^000000, 
dependendo da sua vitalidade.
^ffffff_^000000
Peso : ^77777713^000000


Ai em cima esta uma parte deli

Eu queria pegar somenete do primeiro ao proximo

Ex:
Poção feita de ervas vermelhas. Recupera ^000088cerca de 45 HP^000000, 
dependendo da sua vitalidade. ^0000FFDê um clique duplo neste item para 
recuperar alguns HP.^000000
^ffffff_^000000
Peso : ^7777777^000000

E exibir em um Memo.
____________________________________________

Ao clicar em um botão
Pegar somente a outra parte entre os #.
E assim por diante.

Isso ia facilitar muito minha vida
Se alguem souber como fazer e poder me ajudar
Eu agradeço ^^


Mortify

Mortify

Responder

Posts

19/03/2008

Marco Salles

//Definindo Variáveis
var
posIni,PosFin:Integer;
Texto:String;


//Inicializando Valores
procedure TForm1.FormShow(Sender: TObject);
begin
texto:=(´501# Poção feita de ervas vermelhas. Recupera ^000088cerca de 45 HP^000000,´+
´dependendo da sua vitalidade. ^0000FFDê um clique duplo neste item para´+
´recuperar alguns HP.^000000´+
´^ffffff_^000000´+
´Peso : ^7777777^000000´+
´´+
´502´+
´Poção feita de ervas vermelhas e amarelas. Recupera ^000088cerca de 105 HP^000000, dependendo da sua vitalidade.´+
´^ffffff_^000000´+
´Peso : ^77777710^000000´+
´´+
´503´+
´Poção feita de ervas amarelas. Recupera ^000088cerca de 175 HP^000000,´+
´dependendo da sua vitalidade.´+
´^ffffff_^000000´+
´Peso : ^77777713^000000´+
´´);
posIni:=0;
end;


//Estruturação do Código
procedure TForm1.Button1Click(Sender: TObject);
var
 copyText:String;
begin
if  posIni> 0 Then
   posFim:=PosEX(´#´,texto,posIni+1)
else
  begin
   posIni:=pos(´´,Texto);
   posFim:=PosEX(´´,texto,posIni+1);
 end;
 copyText:=copy(texto,PosIni+1,posFim-(posIni+1));
 PosIni:=posEx(´´,texto,posFim+1);
 posFim:=PosEX(´´,texto,PosIni+1);
 Showmessage(copyText);
end;


é so adaptar para a sua necessidades . [b:ee106ed999]O Segredo esta n aFunção PosEx[/b:ee106ed999]

Espero ter sido útil ...


Responder

Gostei + 0

21/03/2008

Mortify

Valeu ai cara
Brigadão!!!
Era isso mesmo que eu estava precisando

Desculpa a demora pra responder
É que eu fiquei sem net

Abração ai
>> VALEU NOVAMENTE <<
Te +


Responder

Gostei + 0

21/03/2008

Kroki

Ola gostaria de testar esses codigos mas esta faltando variaveis.
Poderia corrigir o codigo?


Responder

Gostei + 0

21/03/2008

Wanderok

As variáveis usadas sao as seguintes e estao TODAS declaradas...

posIni,PosFin:Integer;
Texto:String;
copyText:String;

A qual voce se refere como ´faltando´ ???


Responder

Gostei + 0

21/03/2008

Kroki

PosiFin na verdade é posifiM com m mas isso não é nada,eu não entendí e não achei foi ´PosEX´.
Eu colei o codigo e achei os erros,se puder me ajudar,mas complementando oque eu precisava era fazer o seguinte;
Pegar uma string de um ListBox,tipo´abcdef/12345/p5p5p5´e separar em tres para obter os resultados,abcdef,12345,p5p5p5 sem o ´/´.
Sabe uma função?
Tipo do ListBox passar para Label1.caption:=´abcdef´,Label2.caption:=´12345´ e Label3>captio:=´p5p5p5´.


Responder

Gostei + 0

21/03/2008

Mortify

Ae cara pode testar a vontade ^^
LINK: [url]http://geocities.yahoo.com.br/mortify.lamim/Delphi/TESTE_BD_ARQUIVO_DE_TEXTO.zip[/url]
Só não repara os nome e talz
Veio eu fiz esse teste com um arquivo de texto
Então você vai ter que colocar o caminho do arquivo de texto que você quer ler
Ele Está lendo de { até } e não de # até como ta ai em cima
É que eu já tinha feito umas alterações. xD
Depois me diz se conseguiu entender o código.

[size=18:0c2d7ec7d2][color=red:0c2d7ec7d2][b:0c2d7ec7d2]AJUDA DENOVUUU[/b:0c2d7ec7d2][/color:0c2d7ec7d2][/size:0c2d7ec7d2]

[i:0c2d7ec7d2]Pensando>>[Eu acho que sou o cara mais chato desse fórum.][/i:0c2d7ec7d2]

[b:0c2d7ec7d2]Será que alguém poderia me ajudar com um Locate (ou qualquer outra coisa) ^^
Eu preciso fazer uma comparação entre tabela e uma linha de um Memo
Tipo é mais ou menos assim

no meu Memo no momento tem os seguintes dados:[/b:0c2d7ec7d2]
502
lalala
01
03


[b:0c2d7ec7d2]Ai eu queria ver se na minha tabela já tem o o item 502
Tem como comparar a linha 0 do Memo com um campo de uma tabela?

Obs.: Campo da tabela é do tipo Autoincremente (+)[/b:0c2d7ec7d2]


Responder

Gostei + 0

21/03/2008

Mortify

Veio PosEx não é variavel
é Função
Por isso você não achou
Da um ctrl+espaço e arruma ele
Acho que estava escrito errado nem lembro

OBS.: Não consegui editar a mensagem anterior =\


Responder

Gostei + 0

21/03/2008

Wanderok

Não consegui editar a mensagem anterior =\


Seria tão bom se a gente pudesse editar os próprios posts... :D:D:D


Responder

Gostei + 0

21/03/2008

Wanderok

procedure form1.desmembra;
var Texto,parte1, parte2, parte3:String;
i : integer;
begin
Texto := ´abcdef/12345/p5p5p5´;
parte1 := ´´;´
i:=1;
while (Texto[i] <> ´/´) and (i <= length(Text)) then
begin
parte1:=parte1+texto[i];
inc(i);
end;
parte2 := ´´;´
inc(i);
while (Texto[i] <> ´/´) and (i <= length(Text)) then
begin
parte2:=parte2+texto[i];
inc(i);
end;
parte3 := ´´;´
inc(i);
while (Texto[i] <> ´/´) and (i <= length(Text)) then
begin
parte3:=parte3+texto[i];
inc(i);

edit1.text := parte1;
edit2.text := parte2;
edit3.text := parte3;

end;


Seria tão bom se a gente pudesse editar os póprios posts.... :D:D:D


Responder

Gostei + 0

21/03/2008

Wanderok

Por favor, onde está LENGTH(TEXT) substituir por LENGTH(TEXTO)...

Seria tão bom se a gente pudesse editar os póprios posts.... :D:D:D


Responder

Gostei + 0

21/03/2008

Mortify

[b:e5b5eab910]Isso ia ajudar bastante
E ia reduzir o número de post do forum
Pra mim isso seria ótimo para os 2 lados
Mais fazer o que?! Os cara num que deixar
O que temos a fazer então é aceitar. ^^

[size=18:e5b5eab910][color=red:e5b5eab910][b]ALGUEM ME AJUDA COM O LOCATE POR FAVORRRRRR[/b:e5b5eab910][/color:e5b5eab910][/size:e5b5eab910][/b]


Responder

Gostei + 0

21/03/2008

Wanderok

Bem......

a gente não pode fazer nada..... é maior do que a gente....

mas.....................

nada impede que a gente expressa nossas idéias, certo ????

entao....

Seria tão bom se a gente pudesse editar nosso próprio post.... :D:D:D


Responder

Gostei + 0

21/03/2008

Mortify

é verdade ^^
A única coisa que temos a fazer é expressar nossas idéias

lalala
Aguardando locate =\


Responder

Gostei + 0

21/03/2008

Mortify

[color=red:44247f2011][size=18:44247f2011][b:44247f2011]PROBLEMA RESOLVIDO ^^[/b:44247f2011][/size:44247f2011][/color:44247f2011]

[b:44247f2011]pelo menos o do Locate né
Pena que não da pra resolver o do edit
xD[/b:44247f2011]


Responder

Gostei + 0

21/03/2008

Marco Salles

oque eu precisava era fazer o seguinte; Pegar uma string de um ListBox,tipo´abcdef/12345/p5p5p5´e separar em tres para obter os resultados,abcdef,12345,p5p5p5 sem o ´/´. Sabe uma função? Tipo do ListBox passar para Label1.caption:=´abcdef´,Label2.caption:=´12345´ e Label3>captio:=´p5p5p5´.



var
Texto:String;
posIni,PosFim:integer;
begin
Texto := ´abcdef/12345/p5p5p5´;
PosIni:=Pos(´/´,Texto);
Showmessage(copy(texto,1,posIni-1));
PosFim:=PosEx(´/´,texto,PosIni+1);
Showmessage(copy(texto,posIni+1,posFim-PosIni-1));
Showmessage(copy(texto,posFim+1,Length(texto)-PosFim));
end;


[b:c7786d818e]p:s[/b:c7786d818e] ..
Aonde tiver showmessage(.......) substitua por : Label1.Caption:=copy(texto,1,posIni-1); idem para os demais labels...


PosEx -->> Não é variável ...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar