Помогите перевести функцию на паскаль

Тема в разделе "Delphi - FAQ", создана пользователем -, 8 июн 2010.

Статус темы:
Закрыта.
  1. Гость

    Помогите перевести функцию на паскаль


    Name: ZASHIFR
    Params: P1
    Return: String
    Example: ZASHIFR(P1)

    FUNCTION ZASHIFR(P1)

    LOCAL L2, L3 := ""

    IF VALTYPE(P1) == "A"

    FOR L2 := 1 TO LEN(P1)

    P1[L2] := ZASHIFR(P1[L2])

    NEXT

    RETURN P1

    ELSE

    FOR L2 := 1 TO LEN(P1)

    L3 := L3 + CHR(256 - ASC(SUBSTR(P1, L2, 1)))

    NEXT

    ENDIF
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    А какой это язык и чё она делает?
     
  3. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    ЭТО BASIC, какой-то из его вариантов.
    А функция рекурсивно "типа шифрует" что-то.
     
  4. isqoff

    isqoff Гость

    блин в принципе перевести сложно(в паскале нет функции на проверку типа данных (аналог vartype)) . Вот если бы было само задание,
    то можно было бы что-нибудь мудрить :not
    конкретно : какие данные вводятся на проверку и что на выход???
     
  5. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Ба! Этож Клиппер! Старый дедушка Клиппер! :))
    Смысл кода в том что в клиппере переменные типизируются в контексте использования.
    Т.е. P1 в равной степени может быть как строчкой так и массивом строк.
    Чтобы проверить - втулили функцию "VALTYPE(P1)".
    Кому интересно, вот выдержка из мануала:
    Короче... В Delphi это будет так:
    Код (Delphi):
    ...
    ...
    var
    Form1: TForm1;
    P: string;
    PP: array of string;
    implementation

    {$R *.dfm}

    function ZASHIFR(P1: string): String; overload;
    var
    L2: Integer;
    begin
    SetLength(Result,Length(P1));
    for L2 := 1 to Length(P1) do
    Result[L2] := Chr(256 - Ord(P1[L2]));
    end;

    procedure ZASHIFR(var P1: array of string); overload;
    var
    L2: Integer;
    begin
    for L2 := 0 to Length(P1)-1 do
    P1[L2] := ZASHIFR(P1[L2]);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var
    i: Integer;
    begin
    // Инициализируем переменные
    P := 'BLA BLA BLA BLA';
    SetLength(PP,10);
    for i := 0 to Length(PP)-1 do
    PP[i] := 'BLA BLA '+ IntToStr(i);
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i: Integer;
    begin
    // Первый клик по кнопке - шифруем
    // Второй клик - дешифруем и т.д.

    P := ZASHIFR(P);
    ZASHIFR(PP);

    // Выводим результат шифровки/дешифровки
    Edit1.Text := P;
    Memo1.Clear;
    for i := 0 to Length(PP)-1 do
    Memo1.Lines.Add(PP[i]);
    end;
    В общем все просто... (если знаешь как)... :not
     
  6. Гость

    Да функа была написана на clipper в общем она была вытащена путем декомпиляции из bti7.exe
    находиться она в lib.udf смысл этой функции шифровка/расшифровка из файла bti7.par вот я и пытаюсь
    сделать это только на делфи
    Кому интересно архив прилагаю.
    Ссылка на файл
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей