Newsgroup: it.comp.lang.delphi
Titolo: AIUUUTOOOO!!! Le procedure ricevono parametri formali casuali !!!!!!!!!!

Io ho esattamente il problema descritto nell'oggetto del messaggio.
Ho creato una procedura in una mia Unit con questa intestazione:
Procedure CriptaCesareSomma(FileDati, NuovoFile, Chiave : String; Const
Tempo : TTempo;Var TempoFileCorr, TempoTotCorr : Integer);
Il Tipo TTEmpo č definito cosě
  Type
    TTempo = Record
      TempoMetodo, TempoFile,TempoTot : Integer;
    End;
Quando vado a vedere con il debugger quello che succede quando chiamo la
funzione, vedo che i parametri attuali(quelli passati) e quelli formali non
coincidono. Naturalmente io non ho fatto alcun uso di funzioni tipo
Randomize e Random.
Non so veramente cosa fare perchč non vorrei creare delle variabili globali
per una stupidata del genere.
Come vedrete nella riga di intestazione, io passo alla procedura tre
stringhe che vengono passate correttamente, tre interi passati come costanti
di tipo TTEmpo che vengono sballati, e due altri interi passati per
indirizzo sballati anch'essi. Passando gli interi per valore la situazione
rimane invariata: vengono comunque generati numeri casuali.
Inoltre all'interno della stessa procedura ho notato che accadono delle cose
stranissime: per esempio facendo un ciclo For:
For Cont := 1 To 100 Do
accade che cont all'inizio risulta uguale a 100 e poi decrementa
casualmente.
Cosa devo fare????
Aiutatemi perfavore!!!!!!
Grazie a tutti.
Ciao.

Ti posto il codice che ho compilato ed eseguito senza problemi, sicuramente
nella tua procedura CriptaCesareSomma() manipoli i parametri in modo
errato...se non e' molto lungo posta tutto il listato, oppure solo la
procedura CriptaCesareSomma()...
La procedura Cripta la richiamo al click di un bottone piazzato sul form e
non sapendo cosa dovrebbe fare ho semplicemente assegnato alla caption delle
label sempre posizionate sul form i valori di tutti i parametri passati alla
funzione e tutti quanti coincidono.
----------------------------------------------------------------------------
----------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TTempo = Record
      TempoMetodo, TempoFile,TempoTot : Integer;
    End;
  TForm1 = class(TForm)
    Param1: TLabel;
    Param2: TLabel;
    Param3: TLabel;
    Int1: TLabel;
    Int2: TLabel;
    Int3: TLabel;
    LastVal1: TLabel;
    LastVal2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
Procedure CriptaCesareSomma(FileDati, NuovoFile, Chiave:String; Const
Tempo:TTempo; Var TempoFileCorr,TempoTotCorr:Integer);
implementation
{$R *.DFM}
Procedure CriptaCesareSomma(FileDati, NuovoFile, Chiave:String; Const
Tempo:TTempo; Var TempoFileCorr,TempoTotCorr:Integer);
Begin
 With Form1 Do
      Begin
       Param1.Caption:=FileDati;
       Param2.Caption:=NuovoFile;
       Param3.Caption:=Chiave;
       Int1.Caption:=IntToStr(Tempo.TempoMetodo);
       Int2.Caption:=IntToStr(Tempo.TempoFile);
       Int3.Caption:=IntToStr(Tempo.TempoTot);
       LastVal1.Caption:=IntToStr(TempoFileCorr);
       LastVal2.Caption:=IntToStr(TempoTotCorr);
      End;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var TT:TTempo;
    TTFile,TTCorr:Integer;
begin
 TTFile:=10;
 TTCorr:=20;
 TT.TempoMetodo:=1;
 TT.TempoFile:=2;
 TT.TempoTot:=3;
 CriptaCesareSomma('FileDati','NuovoFile','Chiave',TT,TTFile,TTCorr);
end;
end.
----------------------------------------------------------------------------
------------------

 wrote in message
8ejuv6$na8$4...@nslave1.tin.it...
