Strings. Essa é pra quem manja mesmo.

09/03/2003

0

Boa Noite.

Utilizo a linguagem ADVPL e nela tem uma função chamada soma1(String) que faz o seguinte:

string := ´01´ ;
string := soma1(string);
string passa a ser ´02´

Outro exemplo:

string := ´99´ ;
string := soma1(string);
string passa a ser ´A0´
Depois ´A1´ e ai vai.

Outro exemplo:

string := ´ZZ´ ;
string := soma1(string);
string passa a ser ´100´

Se alguém souber de uma função semelhante ou tem algum código que faça isso.

Atento que a função trata strings de qualquer tamanho.



O AdilsonD escreveu o fonte:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function Soma1(Value: String): String;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.Soma1(Value: String): String;
var
fValue1,
fValue2: Byte;
begin
fValue1 := Ord(Value[1]);
fValue2 := Succ(Ord(Value[2]));
if not (fValue2 in [Ord(´0´)..Ord(´9´)]) then
begin
if fValue1 = Ord(´9´) then
fValue1 := Ord(´A´)
else
begin
Inc(fValue1);
if fValue1 > Ord(´Z´) then
fValue1 := Ord(´0´);
end;
fValue2 := Ord(´0´);
end;
Result := Chr(fValue1) + Chr(fValue2);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Soma1(Edit1.Text);
end;

end.



Muito boa a função funciona para 2 caracteres.
Li o fonte e não consegui. Preciso que ao chegar a ´ZZ´ ele não pule pra ´00´ e sim ´100´.
Quando chegar em ´1ZZ´, ´200´.
´ZZZ´, ´1000´. E ai vai.

Por favor me ajude.

Valew.


Doug_chagas

Doug_chagas

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar