Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 19:17   #1
Flaina
 
Регистрация: 09.02.2012
Сообщений: 4
Стрелка Delphi, Not enough actual parameters, шифрование

Задача на Шифрование методом Аффинных подстановок Цезаря.
Есть 2 функции готовые - для шифровки и расшифровки.
Выдает 2 ошибки, когда пытаешься использовать эти функции.
Спасибо заранее за помощь!
Тут ошибка
Код:
outString:=Affinna_Crypt(InString;a;b;93);

Весь код
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    OpenEdt: TEdit;
    SaveEdt: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure OpenBtnClick(Sender: TObject);
    procedure SaveBtnClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  inFile, outFile : TextFile;
  a, b, i :integer;
  inpStr, outStr : array [0..255] of char;
 
implementation
 
{$R *.dfm}
 
      //ФУНКЦИЯ ШИФРОВКИ
 
function Affinna_Crypt(s:String;a:integer;b:integer;m:integer):string;
const
  SizeA = 93; //Размер алфавита
//Алфавит
RusA = ' !%()*+,-./0123456789:;<=>?^№абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; 
var i, P,t:integer;
    temp:String;
begin
temp:='';
//удаление символов сообщения, не входящих в алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA);      
   t:=((P*a+b) mod m);
   s[i]:=RusA[t];
   end;
   Result:=s;
end;
                 //ФУНКЦИЯ РАСШИФРОВКИ
 
 
function Affinna_DeCrypt(s:String;a:integer;b:integer):string;
const
  SizeA = 93; //Размер алфавита
  RusA = ' !%()*+,-./0123456789:;<=>?^№абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; //Алфавит
var i, P,m:integer;
    temp:String;
begin
m:=93;
temp:='';
//удаление символов сообщения, не входящих в алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA);       //ok
   while ((P-b) mod a)<>0 do
   P:=P+m;
   s[i]:=RusA[(P-b) div a];
 
   end;
   Result:=s;
end;
 
 
 
 
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
s, inString, outString : String;
m:integer;
begin
a := StrToInt(Edit1.Text);
  b := StrToInt(Edit2.Text);
  m:=93;
 
  AssignFile(inFile, OpenEdt.Text);           //
  AssignFile(outFile, SaveEdt.Text);          //
                                              // привязка файлов
  Reset(inFile);                              //
  Rewrite(outFile);                           //
 
  Read(inFile,inString);
  StrPCopy(inpStr,inString);
 
   outString:=Affinna_Crypt(InString;a;b;93);
   write(outFile,outString);
 
end;
 
 
 
 
procedure TForm1.OpenBtnClick(Sender: TObject);
begin
  If OpenDialog.Execute Then OpenEdt.Text := OpenDialog.FileName;
end;
 
procedure TForm1.SaveBtnClick(Sender: TObject);
begin
  If SaveDialog.Execute Then SaveEdt.Text := SaveDialog.FileName;
end;
 
 
 
 
 
procedure TForm1.Button2Click(Sender: TObject);
var
s, inString, outString : String;
begin
a := StrToInt(Edit1.Text);
  b := StrToInt(Edit2.Text);
 
  AssignFile(inFile, OpenEdt.Text);           //
  AssignFile(outFile, SaveEdt.Text);          //
                                              // привязка файлов
  Reset(inFile);                              //
  Rewrite(outFile);                           //
 
  Read(inFile,inString);
  StrPCopy(inpStr,inString);
 
   outString:=Affinna_DeCrypt(InString;a;b);
   write(outFile,outString);
 
end;
 
end.
Flaina вне форума Ответить с цитированием
Старый 21.02.2012, 19:29   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
outString:=Affinna_Crypt(InString;a;b;93);
параметры через запятую пишут, когда функцию вызывают!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 21.02.2012, 19:42   #3
Flaina
 
Регистрация: 09.02.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
параметры через запятую пишут, когда функцию вызывают!
Спасибо, совсем что-то я...
Выходной файл пустой, почему символы не записываются в файл, понять не могу?
Помогите пожалуйста
Flaina вне форума Ответить с цитированием
Старый 21.02.2012, 22:53   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Close(outFile) забыл
Все тривиальное просто

Последний раз редактировалось whatever; 21.02.2012 в 22:56.
whatever вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдаёт ошибку "Not enough actual parameters" в Borland delphi Fri Помощь студентам 7 09.10.2011 16:43
[DCC Error] Unit2.pas(54): E2034 Too many actual parameters pavellyba Общие вопросы Delphi 3 30.03.2011 03:02
ошибка Not enough actual parameters veram Софт 1 13.10.2010 10:51
мой конструктор класса Delphi - [Error] Unit1.pas(64): Not enough actual parameters Terrance! Помощь студентам 1 21.09.2010 13:16
Not enough actual parameters ZhekON Общие вопросы Delphi 7 01.02.2007 15:26