Como transferir informaes de um mtodo para outro.

Caros,

Em um programa que estou desenvolvendo para treinar, criei um mtodo que faz alguns calculos e deve retornar os resultados. Como estava seguindo o que consegui aprender do livro de introduo, utilizei o comando return com tipo string (como segue logo abaixo) e funcionou perfeitamente para exibir os resultados atravs de um boto de comando. Porm, ao criar um novo mtodo e tentar acessar estas informaes neste novo mtodo, convertendo os valores em tipo double ocorre uma alterao, por exemplo: o valor Astrao que seria 1.632457 fica da seguinte forma 1632457.0 ocasionando um erro em todo o clculo a partir da leitura desse valor.

//definido variveis de retorno como array tipo String.
Dim R_Dim_Seo_RET () As String

R_Dim_Seo_RET = array(str(xln), str(x23), str(x34), str(Astrao), str(Ascompresso), DomTipo, ATipo, str(fcd), str(fyd), str(Mfd), str(dfc), str(dfs))

Return R_Dim_Seo_RET

Algum poderia me dar uma dica para resolver solucionar esta situao?

Obrigado,
Att. Daniel

Voc pode explicar textualmente exatamente o que quer fazer? Eu posso dizer uma boa forma de resolver.

Mas sem muito detalhe posso dizer que o ideal evitar converses desnecessrias, use Double direto ao invs de usar String<->Double.

Xojo no tem tuplas como no C#: Tuple<int, string, bool> tuple = new Tuple<int, string, bool>(1, “one”, true);

Ento existem 2 sadas normais para o caso evitando converses, usar estruturas (Xojo Structures, que tem tamanho fixo para strings, ruim para este caso) ou usar ByRef e apanhar resultados via lista nos parmetros.

// Passando recebendo dados diversos entre mtodos via ByRef
// *** Warning not tested, just wrote it directly here ***
//------------------------------------------------------------------------- 
Sub F1 (i1 As Integer, i2 As Double, ByRef o1 As Double, ByRef o2 As String)
  o1 = i1 * i1
  If o1 >= 0 Then
    o2 = "Positivo"
  Else
    o2 = "Negativo"
  End
End

Function F2(p1 As Integer, p2 As Double) As String
  Dim r1 As Double
  Dim s1 As String
  F1(p1, p2, r1, s1) // passa p, p2 e pega r1, s1
  Return Str(r1)+"  "+s1
End

// teste
MsgBox F2(2, 3.5)

Ok, obrigado Rick Araujo. Vou tentar explicar melhor:

Neste programa vou calcular a deformao de uma viga, porm antes preciso saber o quanto de ao ser usado nesta viga.

Escrevi um mtodo que vai calcular a quantidade de ao e que est funcionando perfeitamente.

Agora no prximo mtodo pretendo calcular a deformao e para isso preciso buscar alguns resultados (so valores em double e respostas de texto em string que preciso buscar no mtodo que calcula as armaduras).

Att. Daniel

Voc explicou muito superficialmente, no diz exatamente o que quer passar e receber.

D para dizer algo como: preciso das seguintes funes:

CalculaQuantAco: Quero passar estes parametros (segue lista com nomes e tipos (Double, Integer…)), quero receber estes resultados (segue lista com nomes e tipos (Double, Integer…)).

CalculaDeformacao: Quero passar estes parametros (segue lista com nomes e tipos (Double, Integer…)), quero receber estes resultados (segue lista com nomes e tipos (Double, Integer…)).

Se voc quer receber multiplos valores numa chamada, provavelmente o uso de ByRef nos parametros resolve seu problema.