Какие это компоненты в Lazarus ?
Модератор: Модераторы
Какие это компоненты в Lazarus ?
Здравствуйте.
Есть задача переписать с 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
Есть задача переписать с 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
Я бы советовал сначала на Delphi перенести. Это все же проще будет.
TNMURL - компонента со страницы FastNet палитры, по-моему ставится вместе с Delphi 6.
TidBase64Encoder/Decoder - компоненты Indy со страницы Indy Misc
TNMURL - компонента со страницы FastNet палитры, по-моему ставится вместе с Delphi 6.
TidBase64Encoder/Decoder - компоненты Indy со страницы Indy Misc
На закладке Indy Misk Protokol Encoder/Decoder
Имеются компоненты
IdEncoderMIME (с числом 64 на иконке)
IdEncoderUUE
IdEncoderXXE
IdEncoderQuotedPrintable
IdMessageEncoderMIME
IdMessageEncoderYenc
С наименованием именно таким TidBase64Encoder отсутсвует
Имеются компоненты
IdEncoderMIME (с числом 64 на иконке)
IdEncoderUUE
IdEncoderXXE
IdEncoderQuotedPrintable
IdMessageEncoderMIME
IdMessageEncoderYenc
С наименованием именно таким TidBase64Encoder отсутсвует
Вот как это выглядит у меня
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Какая версия Indy стоит?
Бог его знает. Он входит в состав Delphi6
Вот все что нашел
Вот все что нашел
У вас нет необходимых прав для просмотра вложений в этом сообщении.
есть Indy 9 и Indy 10, они не совместимы напрямую между собой. в последнем лазаре используется 10. а значит надо не копи-пасте делать а переделывать логику под работу indy 10.
Я эти и занимаюсь, переделываю.
В общем нарыл текст функций.
В общем нарыл текст функций.
Код: Выделить всё
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.
Спасибо.
