pegar valor dos arrays

30/11/2005

como faço para pegar o valor desses arrays


procedure TForm1.Button1Click(Sender: TObject);
const
numeros: array[0..9] of string = (´00´,´01´,´02´,´03´,´04´,´05´,´06´,´07´,´08´,´09´);
letras : array[´A´..´Z´] of string = (´10´,´11´,´12´,´13´,´14´,´15´,´16´,´17´,´18´,´19´,´20´,´21´,´22´,´23´,
´24´,´25´,´26´,´27´,´28´,´29´,´30´,´31´,´32´,´33´,´34´,´35´) ;

var EMPRESA,VALOR,teste: string;

begin
EMPRESA := ´OE´;
teste := COPY(EMPRESA,1,1);
VALOR := letras[teste];
teste := COPY(EMPRESA,2,1);
VALOR := Valor+letras[´E´];
showmessage(valor);

end;


Eric.miranda

Respostas

30/11/2005

Massuda

Como toda string é um array de char, pode-se fazer algo assim...
procedure TForm1.Button1Click(Sender: TObject);
const
  numeros: array[0..9&93; of string = (´00´,´01´,´02´,´03´,´04´,´05´,´06´,´07´,´08´,´09´);
  letras : array&91;´A´..´Z´&93; of string = (´10´,´11´,´12´,´13´,´14´,´15´,´16´,´17´,´18´,´19´,´20´,´21´,´22´,´23´,
  ´24´,´25´,´26´,´27´,´28´,´29´,´30´,´31´,´32´,´33´,´34´,´35´) ;

var EMPRESA,VALOR: string;
  teste: Char;
begin
 EMPRESA := ´OE´;
 teste := EMPRESA&91;1&93;;
 VALOR := letras&91;teste&93;;
 teste := EMPRESA&91;2&93;;
 VALOR := Valor+letras&91;teste&93;;
 showmessage(valor);

(*
  ou, dum modo mais generico...

  Valor := ´´;
  for I := 1 to Length(Empresa) do begin
    Valor := Valor + Letras&91;Empresa&91;I&93;&93;;
  end;
*)
end;



Responder Citar

30/11/2005

Eric.miranda

Valeu Massuda, era isso mesmo que estava precisando..

só mais uma coisa se vc puder me dizer se tem como..
teria como juntar esses dois arrays,

pq tenho uma coisa do tipo.

OEA100001

e tenho que ficar verificando e conventendo cada caracter em seu valor correspondente no array e ir somando
ex O = 24 E= 14 A=10 etc..
24+14+10

valeu


Responder Citar

30/11/2005

Eric.miranda

fiz de uma forma diferente .. mas estou com um errinho ..

procedure TForm1.Button2Click(Sender: TObject);
const
numeros: array[0..9] of string = (´00´,´01´,´02´,´03´,´04´,´05´,´06´,´07´,´08´,´09´);
letras : array[´A´..´Z´] of string = (´10´,´11´,´12´,´13´,´14´,´15´,´16´,´17´,´18´,´19´,´20´,´21´,´22´,´23´,
´24´,´25´,´26´,´27´,´28´,´29´,´30´,´31´,´32´,´33´,´34´,´35´) ;

var EMPRESA,VALOR: string;
teste: Char;
i: integer;
begin
EMPRESA := ´EPA1123456´;

for i:= 1 to 10 do
begin
teste := EMPRESA;
if (teste in [´A´..´Z´]) then
begin
VALOR := valor+letras[Empresa];
end
else
begin
VALOR := valor+numeros[Empresa];//dá erro aqui!!!!!
end;

end;

showmessage(valor);
end;

vejam se vcs podem me ajudar em mais essa..
valeu pessoal


Responder Citar

30/11/2005

Massuda

fiz de uma forma diferente .. mas estou com um errinho ..
Mude para...
VALOR := valor+numeros[Ord(Empresa)&93;;



Responder Citar

30/11/2005

Eric.miranda

Massuda, deu erro..
acess violation.. :(


Responder Citar

30/11/2005

Massuda

Revendo seu código, ele devia ser algo assim...
...
for i:= 1 to Length(Empresa) do 
begin 
  teste := EMPRESA[I&93;; 

  if (teste in &91;´A´..´Z´&93;) then 
  begin 
    VALOR := valor+letras&91;teste&93;; 
  end 
  else 
  begin 
    VALOR := valor+numeros&91;Ord(teste)&93;;
  end; 
end;
...



Responder Citar