Ir para conteúdo
Fórum Script Brasil
  • 0

Converter String para variavel...


Douglas Soares

Pergunta

Bom dia amigos do script brasil!

Estou me matando com uma dúvida aqui... como eu faria pra converter uma string em uma variavel já existente... tipo um typecast... to precisando mt saber disso pra mim terminar uma aplicação, vou dar um exemplo:

a função joganodbgrid adiciona um item lá que contem um caminho local e um caminho remoto, C:\Douglas\Teste.exe, \www\downloads\Teste.exe...

e esses caminhos já tenho eles em variaveis... dai cada checkbox contem o nome da variavel, assim: chk_enviainstallsigi... daí eu obtenho o nome installsigi através da função Copy e passo pra função joganodbgrid, só que é claro que ele adiciona a string installsigi lá no dbgrid, e eu qria que adicionasse o valor da variavel joganodbgrid... tem algum typecast para isso ou vou ter que fazer uma checagem lá dentro da função e ir passando os valores manualmente???

jogarnodbgrid(copy(TJvCheckBox(Components[i]).Name, 10, tam) , 'ftp' + copy(TJvCheckBox(Components[i]).Name, 10, tam));

Obrigado!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
como eu faria pra converter uma string em uma variavel já existente... tipo um typecast

Veja este exemplo:

var
  Form1: TForm1;
  myVar : Variant;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin
   myVar := 200;
   ShowBasicVariantType(myVar);

   myVar := 'Edit1';
   ShowBasicVariantType(myVar);

   myVar := 120.90;
   ShowBasicVariantType(myVar);

   myVar := strtodate('10/02/1980');
   ShowBasicVariantType(myVar);
end;

procedure TForm1.ShowBasicVariantType(varVar: Variant);
var
  typeString : string;
  basicType  : Integer;

begin
  // chama o tipo basico da variant
  basicType := VarType(varVar) and VarTypeMask;

  // Seta a string para o tipo
  case basicType of
    varEmpty     : typeString := 'varEmpty';
    varNull      : typeString := 'varNull';
    varSmallInt  : typeString := 'varSmallInt';
    varInteger   : typeString := 'varInteger';
    varSingle    : typeString := 'varSingle';
    varDouble    : typeString := 'varDouble';
    varCurrency  : typeString := 'varCurrency';
    varDate      : typeString := 'varDate';
    varOleStr    : typeString := 'varOleStr';
    varDispatch  : typeString := 'varDispatch';
    varError     : typeString := 'varError';
    varBoolean   : typeString := 'varBoolean';
    varVariant   : typeString := 'varVariant';
    varUnknown   : typeString := 'varUnknown';
    varByte      : typeString := 'varByte';
    //varWord      : typeString := 'varWord';
    //varLongWord  : typeString := 'varLongWord';
    //varInt64     : typeString := 'varInt64';
    varStrArg    : typeString := 'varStrArg';
    varString    : typeString := 'varString';
    varAny       : typeString := 'varAny';
    varTypeMask  : typeString := 'varTypeMask';
  end;

  // Mostra o tipo da Variant
  ShowMessage('Variant type  = '+typeString);
end;

OBS: Veja que a variant myVar assumira um tipo basico dependendo do conteudo que lhe for passado

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz do jeito tradicional... porém o que você me passou não é o que eu queria... eu queria mais ou menos assim olha:

var
teste1, teste2, teste3 : string;
begin
teste1 := 'C:\Douglas';
teste2 := 'C:\Jhonas';
teste3 := 'C:\Teste';

ShowMessage('teste1');
end;

Veja que eu coloquei no showmessage o teste1 como string.... porém eu qria que ele exibisse o valor do teste1!, com algo parecido assim:

ShowMessage(TVar('teste1'));

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Veja que eu coloquei no showmessage o teste1 como string.... porém eu qria que ele exibisse o valor do teste1!, com algo parecido assim:

ShowMessage(TVar('teste1'));

Esse exemplo não foi muito elucidativo, pois se voce quer que exiba o valor do teste1 é só fazer dessa maneira:

procedure TForm1.Button2Click(Sender: TObject);
var
   teste1, teste2, teste3 : string;
begin
   teste1 := 'C:\Douglas';
   teste2 := 'C:\Jhonas';
   teste3 := 'C:\Teste';

   ShowMessage(teste1);
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

É claro que é só eu fazer ShowMessage(teste1); ..........

o problema é que tem uma hora que faço um for, e obtenho o nome de uma variavel a partir de uma string que é o nome de um checkbox, aí nessa hora eu precisaria dessa conversão, vou passar o exemplo real!

procedure TfrmPrincipal.btn_enviarClick(Sender: TObject);
var
i : integer;
tam : integer;
begin
for i := 1 to Self.ComponentCount - 1 do
begin
if Components[i].ClassType = TJvCheckBox then
begin
if Copy(TJvCheckBox(Components[i]).Name, 1, 9) = 'chk_envia' then
begin
if TJvCheckBox(Components[i]).Checked then
begin
tam := length(TJvCheckBox(Components[i]).Name);
jogarnodbgrid(copy(TJvCheckBox(Components[i]).Name, 10, tam - 11) , 'ftp' + copy(TJvCheckBox(Components[i]).Name, 10, tam - 11));
TJvCheckBox(Components[i]).Checked := false;
end;
end;
end;
end;
cdsUpload.First;
JvThread1.Execute(Self);
end;

o Problema é essa linha: jogarnodbgrid(copy(TJvCheckBox(Components).Name, 10, tam - 11) , 'ftp' + copy(TJvCheckBox(Components).Name, 10, tam - 11));

essa função: copy(TJvCheckBox(Components).Name, 10, tam - 11 me retorna varias coisas: installsigi, installcell, installconv, installgrupos, atusigi, atucell, atuconv, atugrupos, demosigi, democell, democonv, demogrupos.... por isso ao invez deu pegar e passar a string em sí, eu gostaria de passar direto a variavel, mas ao invez deu fazer um case gigantesco eu gostaria de tipo um typecast como te disse, daí ficaria assim:

jogarnodbgrid(TVar(copy(TJvCheckBox(Components).Name, 10, tam - 11)) , 'ftp' + TVar(copy(TJvCheckBox(Components).Name, 10, tam - 11)));

Deu pra entender??? tem jeito de fazer isso ou terei que deixar meu case épico mesmo?

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...