Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   variables globales (https://www.clubdelphi.com/foros/showthread.php?t=40329)

henrygale 13-02-2007 18:15:15

variables globales
 
perdonen si la pregunta es demasiado simplona pero...

¿a alguien se le ocurre una manera de que una función devuelva el contenido de dos variables al programa principal?

a mi lo único que se me ocurre es usando para uno de esos valores una variable global. ¿como se usan variables globales en borland delphi?

el caso es que tengo una función que devuelve una secuencia, pero tambien necesito devolver si se ha podido crear esta de manera correcta o no.

maeyanes 13-02-2007 18:35:32

Para crear una variable global, solo tienes que declararla en la sección interface de la unidad y luego referenciar esta unidad en las otras donde la vayas a usar:

Código Delphi [-]
unit Globales;

interface

uses
  // Lista de unidades

var
  VarGlobal1: Integer;
  VarGlobal2: string;

Para usar una de estas variables:

Código Delphi [-]
unit Form1;

interface

uses
  // Lista de unidades

  // Declaración de tipos y demás

implementation

uses Globales; // con esto puedo usar cualquiera de las variables declaradas en Globales.pas

Ahora, sobre tu duda, yo te recomendaría una función que devuelva True o False si tuvo éxito y como parte de sus parámetros devuelva la secuencia, algo así:

Código Delphi [-]
// Declaración:
function DoSecuencia(var Secuencia: [TipoDeDato]): Boolean;

// Una forma de usarse:
if DoSecuencia(ASecuencia) then
begin
  // Hago aquí lo que quiera con la secuencia creada
end
else
  ShowMessage('Error creando la secuencia')


Saludos...

seoane 13-02-2007 18:38:41

Para estos casos esta 'var'
Código Delphi [-]
function Ejemplo(Parametro: Integer; var Resultado: string): boolean;
begin
  Resultado:= '';
  while Parametro > 0 then
  begin
    Resultado:= Resultado + 'A';
    dec(Parametro);
  end;
  if Length(Resultado) > 0 then
    Result:= TRUE
  else
    Result:= FALSE;
end;

// Por ejemplo
var
  Str: string;
begin
  if Ejemplo(5,Str) then
    ShowMessage(Str);
end;

egostar 13-02-2007 18:41:53

Yo nadamas agregaria a tu código variables ya que pudiera ser que la secuancia dependa de algun dato.

Código Delphi [-]
// Declaración:
function DoSecuencia(var Secuencia:[TipoDeDato]; VarSecuencia:[TipoDeDato]): Boolean;

// Una forma de usarse:
if DoSecuencia(ASecuencia,Variable) then
begin
  // Hago aquí lo que quiera con la secuencia creada
end
else
  ShowMessage('Error creando la secuencia')

Saludos

egostar 13-02-2007 18:42:54

Seoane te me adelantaste pero pensamos en lo mismo, :D:D

Saludos

maeyanes 13-02-2007 18:43:27

Claro está que podría depender de algún otro dato, pero solo era un ejemplo sencillo... ;)


Saludos...

henrygale 13-02-2007 19:24:39

gracias
 
lo hice al reves... introduje con var el booleano en vez de la secuencia pero más o menos es lo mismo.

muchas gracias... ya funciona ;)

edelphi 06-04-2007 00:27:50

bueno hice todo lo que dices en el post pero aun asi no me funciona, esto es lo ke quiero hacer:
Código Delphi [-]
unit global;

interface

implementation
uses principal;
Var nom,app,apm,calu,carr,sem,tur:string;
end.
y en el form1
Código Delphi [-]
....
implementation
uses global,matriculas, Dmodulo;
....
procedure TForm14.SpeedButton2Click(Sender: TObject);
begin
nom:=DBgrid2.Columns[3].Field.text;
app:=DBgrid2.Columns[1].Field.text;
apm:=DBgrid2.Columns[2].Field.text;
calu:=DBgrid2.Columns[0].Field.text;
carr:=DBgrid1.Columns[1].Field.text;
sem:=DBgrid1.Columns[2].Field.text;
tur:=DBgrid1.Columns[3].Field.text;
Showmessage(calu+' '+nom+' '+app+' '+apm+' '+carr+' '+sem+' '+tur);
y me manda estos errores
[Error] frm_buscar_alumnos.pas(283): Undeclared identifier: 'nom' ...

que hago ayudenme

seoane 06-04-2007 00:36:13

Prueba asi
Código Delphi [-]
unit global;

interface
Var nom,app,apm,calu,carr,sem,tur:string;
implementation
uses principal;

end.

edelphi 06-04-2007 00:47:05

ok muchas gracias ahora si parece que me va afuncionar jejeje un lapsus en las lineas de codigo


La franja horaria es GMT +2. Ahora son las 16:53:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi