Newsgroup: it.comp.lang.delphi
Titolo: programma non ereditato

salve NG,
vorrei sapere perchè non riesco a trasformare un programma in pascal in una
procedura delphi
il programma è il seguente
Const Lung=7;
      Alt=18;
Var Messaggio:String[(Lung*Alt)];
    Password:String[Lung+1];
    I,J,K:Integer;
    Matrix:Array[1..Lung,1..Alt] Of Char;
    Ordina:Array[1..Lung*Alt] Of Integer;
Begin
     {INSERIMENTO PASSWORD}
     Repeat
     Repeat
           Clrscr;
           Writeln('Questo programma decripta un messaggio, sapendo la
password ad esso associata.');
           Writeln;
           Write('Inserisci la password conosciuta: ti ricordo ');
           Textcolor(4);
           Write('DEVE');
           Textcolor(7);
           Write(' essere lunga ',Lung,' caratteri: ');
           Writeln;
           Writeln;
           Write('Password= ');
           Readln(Password);
     Until (Length(Password)=Lung);
     J:=0;
     For I:=1 To Lung Do
          Begin
               If (Password[I]=Chr(35)) Then
               J:=1;
          End;
     Until (J=0);
     {INSERIMENTO FRASE}
     Repeat
           Clrscr;
           Write('Inserisci la frase da decriptare lunga ');
           Textcolor(4);
           Write('OBBLIGATORIAMENTE');
           Textcolor(7);
           Write(' ',Lung*Alt,' caratteri:');
           Writeln;
           Writeln;
           Write('Frase= ');
           Readln(Messaggio);
     Until (Length(Messaggio)=Lung*Alt);
     Writeln;
     {ASSEGNAZIONE DEI # ALLA MATRICE}
     For I:=1 To Alt Do
     For J:=1 To Lung Do
         Matrix[I,J]:=Chr(35);
     For I:=1 To Lung*Alt Do
        If (Messaggio[I]<>Chr(35)) Then
           Messaggio[I]:=Chr(Ord(Messaggio[I])-1);
     {ASSEGNAZIONE DELLA FRASE IN ORDINE ALLA MATRICE}
     For K:=1 To Lung Do
     Begin
          For I:=1 To Length(Messaggio) Do
          If (I Mod Alt=1) Then
          Begin
               If ((Password[K]=Messaggio[I]) And (Matrix[1,K]=Chr(35)))
Then
                  For J:=1 To Alt Do
                  Begin
                       Matrix[J,K]:=Messaggio[J+I-1];
                       Messaggio[J+I-1]:=Chr(254);
                  End;
          End;
     End;
     {SCRITTURA DELLA FRASE DECRIPTATA}
     Writeln('La frase decriptata S:');
     Writeln;
     For I:=2 To Alt Do
     For J:=1 To Lung Do
         If (Matrix[I,J]<>Chr(35)) Then
            Write(Matrix[I,J]);
     Writeln;
     Writeln;
     Writeln('N.B. se la frase decriptata risulta illegibile prova a
reinserirla daccapo e');
     Writeln('controlla la password!');
     Writeln;
     Writeln('Premi invio per uscire');
     Writeln;
     Textcolor(2);
     Write('Copyright¸ Carletto 
chiamac...@tiscalinet.it
');
     Readln;
End.
in pratica questo programma dovrebbe decriptare una frase criptata creata
con un altro programma che fa l'inverso (bhe ovvio)
fin qui ci siamo, questo programma fa quel che dovrebbe...
ma se provo a trascriverlo con le dovute modifiche a mio parere esatte in
delphi mi da un errore a runtime
questo è il codice delphi
function TCodDecod.Decodifica(Pass, Text: String): String;
Var
  I,J,L:Integer;
  Matrix:Array[1..7,1..18] Of Char;
  P,T:String;
begin
P:=Pass;
T:=Text;
//Azzeramento Matrice
  For I:=1 To 18 Do
    For J:=1 To 7 Do
      Matrix[J,I]:=Chr(35);
//Decodifica;
  For I:=126 DownTo 1 Do
    If (Text[I]<>Chr(35)) Then
      Text[I]:=Chr(Ord(Text[I])-1);
//Assegnazione
  For L:=1 To 7 Do
    Begin
      For I:=1 To 126 Do
        If (I Mod 18=1) Then
        Begin
          If ((P[L]=T[I]) And (Matrix[1,L]=Chr(35))) Then
          For J:=1 To 18 Do
            Begin
              Matrix[J,L]:=T[J+I-1];
              T[J+I-1]:=Chr(254);
            End;
        End;
    End;
//Scrittura
//  For I:=2 To 18 Do
//    For J:=1 To 7 Do
//      If (Matrix[I,J]<>Chr(35)) Then
//        FraseCodDecod.Text:=Matrix[I,J];
end;
se lascio le stesse variabili del pascal mi si blocca nel secondo ciclo.
se cambio le variabili assegnandole ad altre simili per esempio una
variabile S:string la assegno ad una variabile L:string nel primo caso mi da
errore nel secondo non mi da errore ma non fa un c***o o meglio non decripta
come dovrebbe.
il mio punto è questo: se con pascal funge perchè con delphi non fa lo
stesso?
eppure la logica è quella. credo sia un bug di delphi o sbaglio qualcosa (e
spero sia così senò posso solo spararmi...)
vi prego di aiutarmi a trasformare questo codice (quello in pascal)
nell'equivalente in delphi e vi sarò sempre grato
grazie e ciao

 delphi mi da un errore a runtime
Ma non dici quale errore....
Sii + preciso.
Bye
AS
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:879d30ac68382451c2...@mygate.mailgate.org...
