Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Arreglo bi-tri dimensional a partir de un String

Hola amigos

Pues bien, quiero hacer una funcion que me permita obtener a partir de un string un arreglo de enteros de esta forma:

'357,112' --> (357,112)
'672,464' --> (672,464)
'84,176,20' --> (84,176,20)
'89,176,20' --> (89,176,20)
'672,176,20' --> (672,176,20)

Lo que quiero hacer es tener una clase o una variable que pueda acceder de esta forma:

'357,112' --> (357,112) --> Dato1

Dato1.X, Dato1.Y

'672,176,20' --> (672,176,20) --> Dato2

Dato2.X, Dato2.Y, Dato2.Z

Espero haber sido lo suficientemente claro.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 17-03-2008 a las 20:30:07. Razón: Error en el titulo
Responder Con Cita
  #2  
Antiguo 17-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Creo que ni yo me entendi a lo que pregunte.....

Lo que necesito es pasar el dato String a una variable que sea un arreglo y que pueda acceder a los valores como si fueran coordenadas (X,Y)

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 17-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
a ver si entendi:

Código Delphi [-]
unit Unit3;

interface

uses
   sysutils;

type
   TDato = Class(TObject)
      x: Integer;
      y: Integer;
      z: Integer;
      procedure Cargar(cValor: String);
   end;

implementation

procedure TDato.Cargar(cValor: String);
begin
   x := StrtoIntDef(Copy(cValor, 1, Pos(',', cValor) - 1));
   cValor := Copy(cValor, Pos(',', cValor) + 1, Length(cValor));
   y := StrtoIntDef(Copy(cValor, 1, Pos(',', cValor) - 1));
   cValor := Copy(cValor, Pos(',', cValor) + 1, Length(cValor));
   z := StrtoIntDef(Copy(cValor, 1, Length(cValor));
end;

end.
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 17-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
type
 TEgostar = class(TStringList)
 private
  function GetPoint(Index: Integer): TPoint;
  function GetLines(Index: Integer): Integer;
  function GetCaption(Index: Integer): string;
 protected
  property Point[Index: Integer]: TPoint read GetPoint;
  property Lines[Index: Integer]: Integer read GetLines;
  property Caption[Index: Integer]: string read GetCaption;
 end;
 
implementation

function TEgostar.GetPoint(Index: Integer): TPoint;
var S: string;
begin
 S := Copy(Strings[Index], Pos('=', Strings[Index]) + 1, 255);
 Result.X := StrToInt(Copy(S, 1, Pos(',', S) - 1));
 System.Delete(S, 1, Pos(',', S));
 if Pos(',', S) = 0 then
  Result.Y := StrToInt(S)
 else
  Result.Y := StrToInt(Copy(S, Pos(',', S) + 1, 255));
end;
 
function TEgostar.GetLines(Index: Integer): Integer;
var S: string;
begin
 S := Strings[Index];
 System.Delete(S, 1, Pos(',', S));
 if Pos(',', S) = 0 then
  Result := -1
 else
  Result := StrToInt(Copy(S, Pos(',', S) + 1, 255));
end;
 
function TEgostar.GetCaption(Index: Integer): string;
begin
 Result := Copy(Strings[Index], 1, Pos('=', Strings[Index]) - 1)
end;

Prueba;
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var e: TEgostar; i: Integer;
begin
 ListBox1.Clear;
 e := TEgostar.Create;
 e.LoadFromFile('xxx.txt');
 for i := 0 to e.Count - 1 do
  ListBox1.AddItem(e.Caption[i] + ' - ' + IntToStr(e.Point[i].X) + ':' + IntToStr(e.Point[i].Y) + ' (' + IntToStr(e.Lines[i]) + ')', nil);
 e.Destroy;
end;
Responder Con Cita
  #5  
Antiguo 17-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Muchas gracias amigos, ya estoy haciendo las pruebas, son geniales

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 18-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola Eliseo!

Gracias por el refresco del otro día en tu oficina.

Que bueno que ya hay varias buenas respuestas de los compañeros. Tengo curiosidad por conocer la razón de esto que buscas, para tener más claro el objetivo y, de ser posible, tratar de ayudar.

Saludos.

Al.
Responder Con Cita
  #7  
Antiguo 19-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
¡Hola Eliseo!

Gracias por el refresco del otro día en tu oficina.

Que bueno que ya hay varias buenas respuestas de los compañeros. Tengo curiosidad por conocer la razón de esto que buscas, para tener más claro el objetivo y, de ser posible, tratar de ayudar.

Saludos.

Al.
Hola amigo Al, para la próxima te prometo tener una cerveza bien fria

Bueno, la cuestión es que estoy tratando de mejorar uno de mis sistemas el cual genera la impresión de facturas usando el canvas de impresión en lugar de reporteadores (francamente siempre me ha gustado usar el canvas).

Bueno, resulta que para no tener que modificar el código cada vez que venda un sistema me puse a la tarea de crear un configurador de facturas usando coordenadas (una cuadricula), eso ya está listo, ahora el punto es que esta herramienta que hice genera un archivo con las coordenadas donde deberá de imprimirse cada campo de la factura, por ejemplo:

Cita:
Fecha=3500,500
Lo que quería era convertir ese String en "algo" que pueda acceder como si fueran coordenadas, por ejemplo:

Código Delphi [-]
Printer.Canvas.TextOut(Fecha.X , Fecha.Y,'Fecha');

gracias amigos [Eduarcol] y [cHackAll] por las ideas, gracias [Al] por interesarte en esta solicitud mia. y por supuesto a mi buen amigo [Caral] por ese apoyo moral que siempre estas listo a dar

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 19-03-2008 a las 01:43:47. Razón: Fatal omisión :)
Responder Con Cita
  #8  
Antiguo 19-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que conste que yo di el apoyo moral.
Saludos
Responder Con Cita
  #9  
Antiguo 19-03-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caral Ver Mensaje
Hola
Que conste que yo di el apoyo moral.
Saludos
, perdona amigo, por supuesto que el apoyo moral es lo que mas cuenta.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #10  
Antiguo 19-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por egostar Ver Mensaje

gracias amigos [Eduarcol] y [cHackAll] por las ideas, gracias [Al] por interesarte en esta solicitud mia. y por supuesto a mi buen amigo [Caral] por ese apoyo moral que siempre estas listo a dar

Salud OS
Cita:
Empezado por Caral Ver Mensaje
Hola
Que conste que yo di el apoyo moral.
Saludos
a ver, muy a pesar mio, tengo que remitirlos a la guia de estilo, es impropio de este club que los consejos los den en mensajeria privada, cuando alguien necesite apoyo moral no va a tener donde conseguirlo, asi que para la proxima no se repita o los tendremos que banear a los dos
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #11  
Antiguo 19-03-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Ya me queda un poco más claro (lo que casi no me queda es tiempo el día de hoy, pero trataré de ayudar).

Creo que convendría cargar el archivo de texto en un TStringList (método LoadFromFile) y usar su propiedad Values para acceder a las coordenadas de cada campo.

Con esto, ya sólo restaría convertir un string '50,50' en los enteros: 50 y 50, para lo cual podrías usar algo del código de Javier y Eduardo.

Espero haya sido útil.

Saludos.

Al González.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fecha a partir de un string johurgi Varios 4 18-12-2007 13:03:48
Arreglo String Carliviris Varios 7 11-09-2006 23:26:26
Arreglo De Cadenas : String victor2023 OOP 6 19-05-2006 22:41:44
Partir un string FunBit Varios 5 25-07-2005 17:58:32
Como crear formas a partir de un string!! Alfonso Castill OOP 7 05-06-2004 05:03:22


La franja horaria es GMT +2. Ahora son las 16:44:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi