Какие это компоненты в Lazarus ?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Какие это компоненты в Lazarus ?

Сообщение jsa » 03.04.2020 08:31:25

Здравствуйте.
Есть задача переписать с C++Builder6 программу на Lazarus
Имеется файл dfm и cpp
программа простейший rest сервер используются компоненты доступа к базе TADOConnection,TADOQuery и Indy - TIdHTTPServer

В dfm есть и такие компоненты

object NMURL1: TNMURL
Left = 72
end
object IdBase64Encoder1: TIdBase64Encoder
Left = 104
end
object IdBase64Decoder1: TIdBase64Decoder
Left = 136
end

1й вообще не понятно что это
2й и 3й - вроде должны быть в пакете Indy но не могу их там найти.

Подскажите пожалуйста чем заменить в Lazarus
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какие это компоненты в Lazarus ?

Сообщение DedFrend » 03.04.2020 10:40:42

Я бы советовал сначала на Delphi перенести. Это все же проще будет.
TNMURL - компонента со страницы FastNet палитры, по-моему ставится вместе с Delphi 6.
TidBase64Encoder/Decoder - компоненты Indy со страницы Indy Misc
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Какие это компоненты в Lazarus ?

Сообщение jsa » 03.04.2020 12:16:40

На закладке Indy Misk Protokol Encoder/Decoder
Имеются компоненты
IdEncoderMIME (с числом 64 на иконке)
IdEncoderUUE
IdEncoderXXE
IdEncoderQuotedPrintable
IdMessageEncoderMIME
IdMessageEncoderYenc

С наименованием именно таким TidBase64Encoder отсутсвует
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какие это компоненты в Lazarus ?

Сообщение DedFrend » 04.04.2020 14:46:59

IndyMisc.JPG
Вот как это выглядит у меня
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Какие это компоненты в Lazarus ?

Сообщение jsa » 06.04.2020 06:18:42

Какая версия Indy стоит?
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какие это компоненты в Lazarus ?

Сообщение DedFrend » 06.04.2020 10:11:45

IndyAbout.JPG
Бог его знает. Он входит в состав Delphi6
Вот все что нашел
У вас нет необходимых прав для просмотра вложений в этом сообщении.
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50

Re: Какие это компоненты в Lazarus ?

Сообщение haword » 06.04.2020 11:09:44

есть Indy 9 и Indy 10, они не совместимы напрямую между собой. в последнем лазаре используется 10. а значит надо не копи-пасте делать а переделывать логику под работу indy 10.
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Какие это компоненты в Lazarus ?

Сообщение jsa » 06.04.2020 11:38:25

Я эти и занимаюсь, переделываю.
В общем нарыл текст функций.
Код: Выделить всё
unit unit_Base64;

{$mode objfpc}{$H+}

interface

uses  Classes, SysUtils;

function EncodeBase64(Value: String): String;
function DecodeBase64(Value: String): String;

implementation

const
b64alphabet: PChar = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

function EncodeBase64(Value: String): String;
const pad: PChar = '====';
  //------       
  function EncodeChunk(const Chunk: String): String;
  var
    W: LongWord;
    i, n: Byte;
  begin
    n := Length(Chunk); W := 0;
    for i := 0 to n - 1 do
      W := W + Ord(Chunk[i + 1]) shl ((2 - i) * 8);
    Result := b64alphabet[(W shr 18) and $3f] +
              b64alphabet[(W shr 12) and $3f] +
              b64alphabet[(W shr 06) and $3f] +
              b64alphabet[(W shr 00) and $3f];
    if n <> 3 then
      Result := Copy(Result, 0, n + 1) + Copy(pad, 0, 3 - n);   //add padding when out len isnt 24 bits
  end;
  //-------
begin
  Result := '';
  while Length(Value) > 0 do
  begin
    Result := Result + EncodeChunk(Copy(Value, 0, 3));
    Delete(Value, 1, 3);
  end;
end;

function DecodeBase64(Value: String): String;
  //-------
  function DecodeChunk(const Chunk: String): String;
  var
    W: LongWord;
    i: Byte;
  begin
    W := 0; Result := '';
    for i := 1 to 4 do
      if Pos(Chunk[i], b64alphabet) <> 0 then
        W := W + Word((Pos(Chunk[i], b64alphabet) - 1)) shl ((4 - i) * 6);
    for i := 1 to 3 do
      Result := Result + Chr(W shr ((3 - i) * 8) and $ff);
  end;
  //-------
begin
  Result := '';
  if Length(Value) mod 4 <> 0 then Exit;
  while Length(Value) > 0 do
  begin
    Result := Result + DecodeChunk(Copy(Value, 0, 4));
    Delete(Value, 1, 4);
  end;
end;

end.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какие это компоненты в Lazarus ?

Сообщение alexs » 08.04.2020 12:58:23

Для кодиравания Base64 лучше использовать штатные функции FPC. Модуль так и называется - base64.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Какие это компоненты в Lazarus ?

Сообщение jsa » 10.04.2020 11:49:08

Спасибо.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 75

Рейтинг@Mail.ru