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-11-2008
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
Completar campo con zeros

Hola a todos,
Utilizo delphi 7 y access,

Para crear un archivo txt, realizo lo siguiente:

procedure TFrm_Todo_Inventario.SpeedButton1Click(Sender: TObject);
var
slFile : TStringList;
campo1, campo2, campo3, campo4, campo5, campo6, campo7 : String;
campo8, campo9, campo10, campo11, campo12, campo13, campo14 : String;
campo15, campo19 : String;
campo16, campo17, campo18, campo20 : string;
slCampos : TStringList;
Titulo : String;
begin
slFile := TStringList.Create;
slCampos := TStringList.Create;

/// AdoQuery1.GetFieldNames(slCampos); //Obtenemos la lista de campos en slCampos
qry_rep_inventario.GetFieldNames(slcampos);
Titulo := slCampos.CommaText;
// Titulo := AnsiReplaceStr(Titulo, ',', ' ');
slFile.Add(Titulo);

// AdoQuery1.First;
qry_rep_inventario.First;
// While Not AdoQuery1.Eof do
While Not qry_rep_inventario.Eof do

begin
DecodeDate(qry_rep_inventarioFecha_Entrada.Value, ano_ent, mes_ent, dia_ent);
campo1 := inttostr(ano_ent);
campo2 := '0213';
campo3 := '01';
campo4 := '01';
campo5 := '0001';
campo6 := '01';
campo7 := '01';
campo8 := '01';
campo9 := '00';
campo10 := '0001';
campo11 := '100';
campo12 := '10';
campo13 := '0100';
if qry_rep_inventario.FieldbyName('Cuenta').ASString = '123' then begin
campo14 := '00617'
end;
if qry_rep_inventario.FieldbyName('Cuenta').ASString = '124' then begin
campo14 := '00613'
end;
if qry_rep_inventario.FieldbyName('Cuenta').ASString = '125' then begin
campo14 := '00614'
end;
if qry_rep_inventario.FieldbyName('Cuenta').ASString = '127' then begin
campo14 := '00612'
end;
campo15 :=' ';
// qry_rep_inventario.FieldbyName('tasa_depreciacion').ASString;
campo16 := qry_rep_inventario.FieldbyName('valor_adquisicion').Value;
campo17 := qry_rep_inventario.FieldbyName('depreciacion_acumulada').Value;
campo20 := qry_rep_inventario.fieldbyName('valor_libro').Value;
campo18 := qry_rep_inventario.FieldbyName('valor_adquisicion').Value;
campo19 := qry_rep_inventario.FieldbyName('Descripcion_Articulos').Value;

slFile.Add(campo1+''+campo2+''+campo3+''+campo4+''+campo5+''+campo6+''+campo7+''+campo8+''+campo9+'' +campo10+''+campo11+''+campo12+''+campo13+''+campo14+''+campo15+campo16+campo17+campo20+campo18+camp o19);
qry_rep_inventario.Next;
end;
slFile.SaveToFile('c:\archivo.txt');
end;



los campos, campo16, campo17, campo20 y campo19, los quiero completar con ceros hasta llegar a una mascara de 12 posiciones.


Gracias mil por la ayuda que me puedan brindar,


Alcides
Rep.Dom.
Responder Con Cita
  #2  
Antiguo 17-11-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola alcides por favor lee la guia de estilo y utiliza las etiquetas delphi para poner tu código.
Yo que tu, en vez de emplear tantas variables de tipo string usaría un array:

Código Delphi [-]
type
TCampos = array [1..20] of string;

var
Campos: TCampos;
begin
Campos[1]:= '00001';
Campos[2]:= '12900';
....
end;

En cuanto a lo de completar con ceros, no lo entendí muy bien, por favor explícate mejor

Salu2
Responder Con Cita
  #3  
Antiguo 17-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
mmmmm, así de memoria...

Código Delphi [-]
campo14 = stringofchar('0', 12 - length(campo14)) + campo14;
ShowMessage(campo14);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 17-11-2008
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
Gracias Khronos por la recomendacion, la tomare en cuenta, con relacion a lo de completar es lo siguiente: tengo varios campos de 12 posiciones, quiero que cuando tomen un valor si no llega a doce posiciones que se completen con ceros.


gracias mil



Alcides
Rep.Dom.
Responder Con Cita
  #5  
Antiguo 17-11-2008
Avatar de alcides
alcides alcides is offline
Miembro
 
Registrado: dic 2003
Ubicación: Republica Dominicana
Posts: 204
Poder: 21
alcides Va por buen camino
Gracias Lepe,

Voy a chequear y te hago saber.




Alcides
Rep.Dom.
Responder Con Cita
  #6  
Antiguo 17-11-2008
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Te dejo las funciones:

Código Delphi [-]
Function FullZero(s:String;lon:Integer):String; Overload
Function FullZero(s:Int64;lon:Integer):String; Overload

Function FullZero(s:String;lon:Integer):String; Overload

Var
t : String[255];
Begin
t := StrRepli('0',lon)+trim(s);
t := Copy(t,Length(t)-lon+1,lon);
Result := t;
End;

Function FullZero(s:Int64;lon:Integer):String; Overload

Begin
Result := FullZero(IntToStr(s),lon);
End;

Function StrRepli(c:Char;lon:Integer):String;
Var
s : String[255];

Begin
If Lon < 0 then lon := 0;
If Lon > 255 Then Lon := 255;
FillChar(s,SizeOf(s),c);
SetLength(s,Lon);
Result := s;
End;

Aunque estoy seguro que son fuertes candidatas para este post
http://www.clubdelphi.com/foros/showthread.php?t=41240
__________________
Sitrico
Responder Con Cita
  #7  
Antiguo 19-11-2008
miguel_pxyz miguel_pxyz is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
miguel_pxyz Va por buen camino
También puedes usar la función Format
Responder Con Cita
  #8  
Antiguo 30-01-2009
victor-cm victor-cm is offline
Registrado
 
Registrado: oct 2005
Posts: 5
Poder: 0
victor-cm Va por buen camino
Funcion de relleno

Mira yo he hecho esta funcion, quizás te sirva, es recursiva:

function rellenar(campo:string;con:char;longitud:byte):string;

begin
if longitud>length(campo) then
begin
campo:=concat(con,campo);
rellenar:=rellenar(campo,con,longitud)
end
else rellenar:=campo;

end;

Explicacion:
Campo: es la cadena a la que quieres añadir los ceros
Con: Con lo que quieres rellenar, en tu caso con '0' pero puedes poner lo que quieras
longitud: La longitud total de la cadena resultante.


Vamos que si quiero que la cadena sea de 10 caracteres rellenando con ceros y tengo esta: '123' la función sería:

rellenar('123','0',10)

y te devolvería: 0000000123
Responder Con Cita
  #9  
Antiguo 20-02-2009
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Hola (Cuanto tiempo sin postear...)

A mi se me ha ocurrido esta funcion:
Código Delphi [-]
function CompletarCon(TextoACompletar: String; CompletarCon: Char;   LongitudTotal: Integer): String; 
var   
  I:Integer; 
begin   
  if LongitudTotal>Length(TextoACompletar) then     
    for I := 1 to LongitudTotal-Length(TextoACompletar) do         
      TextoACompletar := CompletarCon + TextoACompletar;     
  Result := TextoACompletar; 
end; 
//De tal forma que  
CompletarCon('Hola', '0', 6);  
//Devolvería 00Hola



Saludos
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
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
Completar sentencias SQL eldiegofg SQL 4 27-07-2007 18:01:17
Auto completar un campo lookUp... Perio Varios 4 13-07-2005 14:56:40
Ayuda a completar una busqueda salvanano SQL 10 20-05-2005 20:06:56
Auto completar un edit... Perio SQL 5 19-05-2005 03:09:43
Completar palabras en un STRINGGRID TURING Varios 0 10-07-2004 01:15:15


La franja horaria es GMT +2. Ahora son las 01:26:42.


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