Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit undefinierten Bezeichnern (https://www.delphipraxis.net/131025-problem-mit-undefinierten-bezeichnern.html)

brushmate 17. Mär 2009 17:47


Problem mit undefinierten Bezeichnern
 
Hi,

ich bin gerade dabei das RSA-Verfahren zu programmieren:

Delphi-Quellcode:
unit mRSA;

interface

uses
  Math;

type
  TRSA = class(TObject)
    private
      p, q: Integer;
      phi, e: Extended;
      function isPrime(x: Integer): Boolean;
      function ggT(x, y: Extended): Extended;
      function modulo(x, y: Extended): Extended;
    public
      n, d: Extended;
      constructor create();
      function crypt(x: Extended): Extended;
      function encrypt(x: Extended): Extended;
      destructor destroy();
  end;

implementation

constructor TRSA.create();
var help: Integer;
begin
  randomize;
  repeat
    help := random(46340);
  until isPrime(help);
  p := help;
  repeat
    repeat
      help := random(46340);
    until isPrime(help);
    q := help;
  until p <> q;
  N := p*q;
  phi := (p-1)*(q-1);
  repeat
    e := random*(N-1);
  until (e > 1) and ((ggT(e, N)) = 1);
  repeat
    d := random*N;
  until modulo((e*d), phi) = 1;
  p := 0;
  q := 0;
  phi := 0;
end;

function TRSA.isPrime(x: Integer): Boolean;
var i: Integer;
begin
  result := true;
  for i := 2 to (x - 1) do begin
    if x mod i = 0 then result := false
  end;
end;

function TRSA.ggT(x, y: Extended): Extended;
var help: Extended;
begin
  if y > x then begin
    help := x;
    x := y;
    y := help;
  end;
  if y = 0 then result := x
  else result := ggT(y, modulo(x, y));
end;

function TRSA.modulo(x, y: Extended): Extended;
begin
  result := x;
  while x >= y do begin
    x := x - y;
    result := x;
  end;
end;

function crypt(x: Extended): Extended;
begin
  result := modulo(power(x, d), n);
end;

function encrypt(x: Extended): Extended;
begin
  result := modulo(power(x, e), n);
end;

destructor destroy();
begin
  n := 0;
  d := 0;
  e := 0;
  inherited;
end;

end.
Beim kompilieren zeigt mir Delphi bei den Funktionen crypt und encrypt folgende Fehler an:
[Fehler] mRSA.pas(85): Undefinierter Bezeichner: 'modulo'
[Fehler] mRSA.pas(85): Undefinierter Bezeichner: 'd'
[Fehler] mRSA.pas(90): Undefinierter Bezeichner: 'modulo'
[Fehler] mRSA.pas(90): Undefinierter Bezeichner: 'e'
[Fehler] mRSA.pas(93): Undefinierter Bezeichner: 'destroy'
[Fehler] mRSA.pas(95): Undefinierter Bezeichner: 'n'
[Fehler] mRSA.pas(96): Undefinierter Bezeichner: 'd'
[Fehler] mRSA.pas(97): Undefinierter Bezeichner: 'e'

Vor diesen Zeilen hat er keine Probleme mit den Funktionen und Variablen...
Wodran liegt's?

alleinherrscher 17. Mär 2009 17:49

Re: Problem mit undefinierten Bezeichnern
 
Deine Funktionen sind keine Angehörigen von der zuvor definierten Klasse TRSA. Aus diesem Grund kennen sie die anderen Funktionen und die in der Klasse definierten Variablen nicht. Füge vor jede Funktion noch den Klassennamen ein, dann wirds funktionieren:

Delphi-Quellcode:
function TRSA.crypt(x: Extended): Extended;
begin
  result := modulo(power(x, d), n);
end;

brushmate 17. Mär 2009 17:53

Re: Problem mit undefinierten Bezeichnern
 
Stimmt... :-D

Danke^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz