Walter e Rodinei... Fiz assim...   Obrigado pela ajuda.... Espero que 
possa ajudar a todos....  Wesley



em um memo que tenha o seguinte valor... usei o ; para delimitar .... e a dica 
do Clécio para pegar os campos.... 

XXXXXXXXXXXXXXXXXXXXXXXXX              ;SSSSSSS                         ;
SSSSSSS ;XXXXXXXX                          ;



{ Funcao converte texto no valor desejado }
function Converte( Texto: String ; CARACTER : Char ;  Valor : String ): String;
var
      TamanhoCampo  : Integer ;
      Campo         : string  ;
      Espaco        : string  ;
begin
    { Pega o tamanho do campo apenas  }
    TamanhoCampo  := length ( Trim( Texto ) );
    
    { Usei assim.... para que eu possa escolher qual campo quero alterar   .. 
poderia usar apenas assim.. Campo    := trim( Texto ) }
    Campo := StringOfChar( CARACTER , TamanhoCampo );

    { Se o Valor que quero Colocar for maior ou = não preciso colocar espaços }
    if Length ( Valor ) >= TamanhoCampo then        
        Result:= StringReplace( Texto , Campo ,  Copy ( Valor , 1 , 
TamanhoCampo  ) , [rfReplaceAll] )
    { Caso seja menor  coloco os espaços }
    else
        Result:= StringReplace( Texto , Campo ,  Valor + StringOfChar( ' ' , 
TamanhoCampo - Length( Valor ) ) , [rfReplaceAll] )
end;





{ N botao coloquei assim.... }
procedure TForm1.btn1Click(Sender: TObject);
var
      x : Integer ;
      y : Integer ;
      Campos  : TStringList ;
begin
    Campos  := TStringList.Create ;
    try
        for x := 0 to mmo1.Lines.Count - 1 do
            begin
                  { limpa }
                  Campos.Clear;

                  { pega os capos }
                  ExtractStrings( [';'] , [] , PChar(mmo1.Lines.strings[x]) , 
Campos ) ;

                  { Converte os Campos  }
                  for y := 0 to Campos.Count - 1 do
                      begin
                            { TROCO O X POR DELPHIBR }
                            Campos.Strings[y] := Converte( campos.Strings[y], 
'X' , DELPHIBR' );
                            { TROCO O S POR CONSEGUI }
                            Campos.Strings[y] := Converte( campos.Strings[y], 
'S' , CONSEGUI' );
                        end;

                  { Limpa Linha }
                  mmo1.Lines.Strings[x] := '';

                  { Cria uma linha do Memo  }
                  for y := 0 to Campos.Count - 1 do
                      begin
                            { TROCO os ; por Espaços }
                            mmo1.Lines.Strings[x] := mmo1.Lines.Strings[x] + 
Campos.Strings[y] + ' ';
                        end;
              end
      finally
            Campos.Free ;
        end;
end;





From: Walter Chagas Jr (BOL) 
Sent: Wednesday, October 29, 2008 4:43 PM
To: delphi-br@yahoogrupos.com.br 
Subject: Re: [delphi-br] Layout


o usuário coloca lá o tamanho que for necessario. A função corta a linha do 
arquivo a cada ponto e virgula ou qualquer outro caractere que voce quiser. Eu 
só faço Layouts de importação desse jeito. Muito melhor, mais facil de 
codificar e menos chances de erros do que aqualela parada de tamanho e Copy pra 
cá, copy pra lá. 

[]s

Walter Alves Chagas Junior
Belo Horizonte - MG - Brazil
[EMAIL PROTECTED]
http://www.geocities.com/SiliconValley/Bay/1058
http://delphitocorporerm.blogspot.com/
MSN: [EMAIL PROTECTED]
SKYPE: WalterChagasJr

----- Original Message ----- 
From: BandaLemuel 
To: delphi-br@yahoogrupos.com.br 
Sent: Wednesday, October 29, 2008 4:40 PM
Subject: Re: [delphi-br] Layout

Walter.. vlw... mas se eu fizer assim ele pode não manter o tamanho do campo 
que o usuario definir..... Wesley

From: Walter Chagas Jr (BOL) 
Sent: Wednesday, October 29, 2008 2:37 PM
To: delphi-br@yahoogrupos.com.br 
Subject: Re: [delphi-br] Layout

faz os campos separados por ponto e virgula.

use esta função pra ir cortando a string a medida que ela vai lendo um campo

function ParteTexto(var Frase: string; Parte: string): string;
//
// Retorna uma parte de um texto antes de um caractere especificado
//
var
i,max: integer;
buff: string;
begin
i := 1;
buff := '';
max := length(parte);
while (i <= length(Frase)) and (buff <> parte) do
begin
buff := buff + Frase[i];
if length(buff) > max then
buff := copy(buff,2,max);
inc(i);
end;
if buff = Parte then
begin
Result := copy(Frase,1,i - max -1);
Frase := copy(Frase,i,length(Frase)+1 -i);
end
else
begin
Result := Frase;
Frase := '';
end;
end;

[]s

Walter Alves Chagas Junior
Belo Horizonte - MG - Brazil
[EMAIL PROTECTED]
http://www.geocities.com/SiliconValley/Bay/1058
http://delphitocorporerm.blogspot.com/
MSN: [EMAIL PROTECTED]
SKYPE: WalterChagasJr

----- Original Message ----- 
From: BandaLemuel 
To: delphi-br@yahoogrupos.com.br 
Sent: Wednesday, October 29, 2008 3:19 PM
Subject: [delphi-br] Layout

Lista

Seguinte... eu não tenho idéia como fazer já procurei mas não achei.... estou 
desenvolvendo um sistema para imprimir nota fiscal.. eu queria fazer com que o 
usuario definisse um layout proprio.... queria fazer tipo assim....

XXXXXXXXXXXXXXXXXXXXXX CCCCCCC NNNNNNN

NNNNNNNNNNNNNNNNNN FFFFFFF GGGGGGG

E ai o meu sistema procurasse o Caracter X e substituisse pelo campo que eu 
queira.... isso é facil... mas como posso saber qntos X o usuario colocou... 
para que ai eu corte a minha string do tamanho que o cliente definiu ??? Alguem 
ja fez isso ou tem ideia de como posso fazer isso ???

Vlw.... Wesley

[As partes desta mensagem que não continham texto foram removidas]

__________ Informa��o do ESET NOD32 Antivirus, vers�o da vacina 3564 (20081028) 
__________

A mensagem foi verificada pelo ESET NOD32 Antivirus.

http://www.eset.com

[As partes desta mensagem que não continham texto foram removidas]

__________ Information from ESET NOD32 Antivirus, version of virus signature 
database 3566 (20081029) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

[As partes desta mensagem que não continham texto foram removidas]

__________ Informa��o do ESET NOD32 Antivirus, vers�o da vacina 3566 (20081029) 
__________

A mensagem foi verificada pelo ESET NOD32 Antivirus.

http://www.eset.com

[As partes desta mensagem que não continham texto foram removidas]



 

__________ Information from ESET NOD32 Antivirus, version of virus signature 
database 3568 (20081030) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


[As partes desta mensagem que não continham texto foram removidas]

Responder a