Ir al contenido


Foto

como puedo extraer datos de una cadena de texto!!


  • Por favor identifícate para responder
14 respuestas en este tema

#1 daniel.rasta

daniel.rasta

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 22 junio 2013 - 11:21

Hola soy nuevo en Delphi y me gustaría poder extraer ciertos campos de una cadena de texto cuyos datos están separados por comas.
Por ejemplo..
(2,*57554579784547,*4578.25,0.00,*14578,Nombre de usuario,020,40,1457894512549745,Nombre de usuario,*Operado,Operado)
En este caso me gustaría poder obtener ciertos datos que se encuentran  señaladas por asteriscos.
El resultado debe ser...
575545797845474578.2514578Operado
De antemano gracias si alguien pudiera ayudarme se lo agradecería bastante
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 22 junio 2013 - 11:42

Hola soy nuevo en Delphi y me gustaría poder extraer ciertos campos de una cadena de texto cuyos datos están separados por comas.
Por ejemplo..
(2,*57554579784547,*4578.25,0.00,*14578,Nombre de usuario,020,40,1457894512549745,Nombre de usuario,*Operado,Operado)
En este caso me gustaría poder obtener ciertos datos que se encuentran  señaladas por asteriscos.
El resultado debe ser...
575545797845474578.2514578Operado
De antemano gracias si alguien pudiera ayudarme se lo agradecería bastante


Usando un TStringList y unos pocas lineas de código solucionas tu problema.

Te paso código pero tu debes de agregar lo que falte, no me gustaría sentirme como que te hago la tarea :D :D :D



delphi
  1.   lista.CommaText := Edit1.Text;
  2.   for I := 0 to Lista.Count - 1 do
  3.   begin
  4.     if lista[I][1] = '*' then
  5.       resultado := resultado + copy(lista[I],2,length(lista[I]));
  6.   end;



Saludos

  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 22 junio 2013 - 11:44

Por cierto,

Bienvenido a DelphiAccess, sientete como en casa.

Saludos
  • 0

#4 daniel.rasta

daniel.rasta

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 22 junio 2013 - 01:05

hola gracias por la ayuda
Una pregunta en estos momentos genero un código mas no logro comprender como puedo plantear el procedimiento o mas bien como lo que anteriormente me ha explicado  :cry:


delphi
  1. unit Unit1;
  2.   :
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Button1: TButton;
  12.     Memo1: TMemo;
  13.     OpenDialog1: TOpenDialog;
  14.     SaveDialog1: TSaveDialog;
  15.     Button2: TButton;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure BT_EXAMINARCLICK(Sender: TObject);
  18.   private
  19.     { Private declarations }
  20.   public
  21.     { Public declarations }
  22.   end;
  23.  
  24. var
  25.   Form1: TForm1;
  26.  
  27. implementation
  28.  
  29. {$R *.dfm}
  30.  
  31. procedure TForm1.Button1Click(Sender: TObject);
  32. begin
  33. Memo1.Lines.LoadFromFile('pruebabanco.txt');
  34. end;
  35.  
  36. procedure TForm1.BT_EXAMINARCLICK(Sender: TObject);
  37. begin
  38.   Opendialog1.Execute;
  39. end;
  40.  
  41. end.


  • 0

#5 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 22 junio 2013 - 05:26

Muy buena solución, yo iba  a proponer el uso del Pos() y algún otro comando de cadenas. Pero StringList tiene mejores opciones...

Santiago.
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 27 junio 2013 - 08:15

Una pregunta en estos momentos genero un código mas no logro comprender como puedo plantear el procedimiento o mas bien como lo que anteriormente me ha explicado


Hola

Vamos por partes, primero hay que saber que queremos hacer, luego se comienza a escribir código.

Veo que tienes dos botones, en uno abres el Dialogo de abrir archivos y en otro abres un archivo definido y colocas su contenido en un Memo.

1. ¿Que es lo que quieres hacer en cada botón?
2. ¿Donde quieres hacer el proceso de extracción de datos de la cadena?

Con éstas dos preguntas podemos saber que pretendes hacer y a partir de ahí puedes generar el seudocódigo o codificar de inmediato, de otra forma estamos dando tumbos.

Saludos

  • 0

#7 daniel.rasta

daniel.rasta

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 28 junio 2013 - 01:08

jejeje gracias por todo pero al parecer ya pude y logre el objetivo gracias  (y)
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 junio 2013 - 01:14

jejeje gracias por todo pero al parecer ya pude y logre el objetivo gracias  (y)


Que bien, ¿podrías mostrarnos cual fué la solución?, así otros compañeros que tengan un problema similar encuentren la solución.

Saludos
  • 0

#9 daniel.rasta

daniel.rasta

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 28 junio 2013 - 02:36



delphi
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. begin
  3. Memo1.Lines.LoadFromFile('pruebabanco.txt');
  4.  
  5. end;
  6.  
  7. procedure TForm1.BitBtn1Click(Sender: TObject);
  8. var
  9.   csv : TStringList;
  10.   fila : TStringList;
  11.   i, j,y : Integer;
  12.   aux,ceros:String;
  13. begin
  14. try
  15.     Memo1.Clear;
  16. csv := TStringList.Create;
  17. // cargar a partir del fichero csv
  18. csv.LoadFromFile(Opendialog1.FileName);
  19.  
  20.     StringGrid1.RowCount:=csv.Count;
  21.  
  22. fila := TStringList.Create;
  23.     ceros:='00000000000';
  24.  
  25.  
  26. ProgressBar.Max := csv.Count -1;
  27.     y:=0;
  28. // recorrer las filas
  29. for i := 0 to csv.Count -1 do
  30. begin
  31. ProgressBar.Position := i;
  32.       fila.Delimiter:=',';
  33. fila.CommaText:=StringReplace(csv.Strings[i],' ','',[rfReplaceAll]);
  34. // recorrer las columnas
  35.       If UpperCase(fila[11]) = 'OPERADO' then
  36.       Begin
  37.         y:=y+1;
  38.         aux:=copy(fila[2],0,pos('.',fila[2])-1);
  39.         aux:=copy(ceros,0,11-length(aux))+fila[2];
  40.         StringGrid1.Cells[0,y]:=FormatDateTime('ddmmyyyy',Date());
  41.         StringGrid1.Cells[1,y]:=aux;
  42.         StringGrid1.Cells[2,y]:=fila[4];
  43.         StringGrid1.Cells[3,y]:=fila[11];
  44.         Memo1.Lines.Add(FormatDateTime('ddmmyyyy',Date())+aux+fila[4]);
  45.  
  46.       End;
  47. end;
  48. MessageDlg('Lectura Exitosa..', mtInformation, [mbOK], 0);
  49. Except
  50.     on E : Exception do
  51.     begin
  52. MessageDlg('Ocurrio un Error: ' + E.Message, mtInformation, [mbOK], 0);
  53.     end;
  54. end;
  55. // liberar la memoria
  56. csv.Free;
  57.  
  58. end;
  59.  
  60. end.
  61.  
  62. Este es el código que utilice


  • 0

#10 FerCastro

FerCastro

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 636 mensajes
  • LocationCiudad de México

Escrito 02 julio 2013 - 11:19


Te paso código pero tu debes de agregar lo que falte, no me gustaría sentirme como que te hago la tarea :D :D :D

Saludos


CUIDADO!!! SI TE HACE LA TAREA TE VA A LLEGAR LA FACTURA!!! EL EGO NO PERDONA!!
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 02 julio 2013 - 11:33

CUIDADO!!! SI TE HACE LA TAREA TE VA A LLEGAR LA FACTURA!!! EL EGO NO PERDONA!!


Pues claro, tengo hijos que mantener, mujeres que procurar y panza que consentir :D :D :D :p

Saludos
  • 0

#12 FerCastro

FerCastro

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 636 mensajes
  • LocationCiudad de México

Escrito 02 julio 2013 - 11:51

Compadre, con la pura panza justificas los cobros...

Saludos!!
  • 0

#13 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 02 julio 2013 - 01:48

...con la pura panza justificas los cobros...


No conozco a su esposa, pero los hijos salen MUY caros..., especialmente cuando se escucha "papá, préstame tu teléfono para jugar"...
  • 0

#14 daniel.rasta

daniel.rasta

    Newbie

  • Miembros
  • Pip
  • 7 mensajes

Escrito 02 julio 2013 - 03:43

hola disculpen después de realizar mi código alguien me podría ayudar para poder contar el numero de resultados (operados) o con que función podría aplicar este mismo gracias
  • 0

#15 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 02 julio 2013 - 05:36

hola disculpen después de realizar mi código alguien me podría ayudar para poder contar el numero de resultados (operados) o con que función podría aplicar este mismo gracias


Hola,
No se si te entendí bien tu pregunta, pero viendo el código yo diría que en la medida en que vas "trozando" y leyendo cada dato lleves la cuenta. Si es que a estos es lo que tu llamas operandos.

Te pediría que no seas tan escueto y expliques precisamente a que debemos entender por operando. Porque primero hablas de extraer datos pero ahora nos sales con "operando". Si te explicas mejor será más fácil asesorarte.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.