powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как подружить zlib от Deplhi с Lazarus
14 сообщений из 39, страница 2 из 2
Как подружить zlib от Deplhi с Lazarus
    #40114481
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13
А здесь подразумевается замена UTF8String на что-то другое?

Нет, сжатые данные нужно представить в форме исключающей появление нулевых байтов. Например, base64 ;)
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114485
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, т е после сжатия еще раз закодировать строку в base64?
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114487
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, а вариант с подправить исходник очень сложнее?
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114495
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13
т е после сжатия еще раз закодировать строку в base64?

Да. И если будет выбран этот вариант, то стоит сделать полную ревизию формата. Например, отказаться от кодирования строки в base64 перед сжатием. Отказаться от сжатия UnicodeString и сжимать байты.

dartveider13
а вариант с подправить исходник очень сложнее?

Это определённо сложнее изменения формата данных.
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114500
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, мда... Тут придется переделывать вторую часть, которая на винде на делфях... Но байты я вроде уже сжимал пробовал. Там создается два потока: поток с base64 и поток сжатия. И все это добро потом в ШК запихивается.
Да уж с либой aztecgen было проще. Жаль что я ее под линукс не соберу, а длл-ки под линуксом не работают
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114508
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13
Fr0sT-Brutal, исходник этой либы написан как я понимаю на плюсах, я в них не очень. Тут как я понимаю надо попробовать собрать его в линуксе? Что получится фиг знает. С инета я взял его и скомпиленой длл-кой

Тогда да. Хотя всегда остается Wine
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114519
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal, любопытно, любопытно. Это ж что получается. Я могу попробовать через wine запустить уже работающую программу windows?
Как же мало я еще знаю о линуксах)))
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114586
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

Немного покопался в LazBarCodes и оказалось, что ноль во входных данных считается ошибкой.
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114596
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покопался ещё немного, и оказалось, что автор zint (порт которой используется в LazBarCodes) признал, что это не правильно и исправил ошибку . Я пофиксил lbc_aztec.pas, можно пользоваться.
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114669
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dartveider13
Fr0sT-Brutal, любопытно, любопытно. Это ж что получается. Я могу попробовать через wine запустить уже работающую программу windows?
Как же мало я еще знаю о линуксах)))

Да, я запускал свои: гуй+файлы+сетевые операции+БД FB - заводилось
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114728
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey, Ваууу спасибо. Я обязательно попробую. Вам прям тыща спасибо так отвлечься на чужой вопрос
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114729
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal, этот вариант я тоже обязательно попробую. Интересно посмотреть. Так то моя програ на винде, которая сейчас у пользователей стоит не сложнее блокнота
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114738
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж. Под wine моя программа взлетела на ура. Будем использовать этот вариант пока что, но все таки я думаю допилю версию на лазаре. Отдельное спасибо Алексею за посильную помощь с разборками lazbarcodes
...
Рейтинг: 0 / 0
Как подружить zlib от Deplhi с Lazarus
    #40114751
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

zlib под linux в виде so-ки спокойной ставится\качается
ZLib.pp в стандартной поставке fpc

описалка

вот пример постепенной распаковки

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
      a:=eRead(inBuf,Length(inBuf));
      if a<=0 then begin
        Result:=a;
        exit;
      end;
      InBufSize:=a;
      Result:=DecodeTo(buf,ASize);

function TMCPFingro.DecodeTo(var Buf; ASize: integer): integer;
var
  status:integer;
begin
    //* We are now decompressing from inbuf to outbuf */

    FZRec.next_in := @InBuf;

    FZRec.next_out := @Buf;
    FZRec.avail_in := InBufSize;
    FZRec.avail_out:= ASize;

    status := inflate(FZRec, Z_PARTIAL_FLUSH);

    if (status = Z_OK) or (status = Z_STREAM_END) then begin
        //* Successful decompression */
        InBufSize:=FZRec.avail_in;
        if InBufSize>0 then begin
          move(FZRec.next_in^,InBuf,InBufSize);
        end;
        Result := PtrInt(FZRec.next_out) - PtrInt(@Buf);

        if (status = Z_STREAM_END) then begin
            //* Turn off compression too */
            DoneDecoder;
            DecodeMode:=false;
        end;
    end else

    if (status = Z_BUF_ERROR) then begin
        //* Full buffers? Maybe we need more output space.. */
        Result:=0;
    end else begin
        Result:=0;
    end;
end;

procedure TMCPFingro.DoneDecoder;
begin
  if CanTranslate then begin
    inflateEnd(FZRec);
    CanTranslate:=false;
  end;
end;

procedure TMCPFingro.InitDecoder;
begin
  if CanTranslate then exit;
  {$IFNDEF FPC}
  FZRec.zalloc := zcalloc;
  FZRec.zfree := zcfree;
  {$ENDIF}
  CanTranslate:=inflateInit_(FZRec, zlib_version, sizeof(FZRec))>=0;
  
end;

...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как подружить zlib от Deplhi с Lazarus
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]