Перейти к содержанию
Fire Monkey от А до Я

Slym

Пользователи
  • Постов

    180
  • Зарегистрирован

  • Посещение

  • Победитель дней

    39

Сообщения, опубликованные Slym

  1. Никак. Читайте что такое числа с плавающей точкой.
    1 правило работы с плавающей точкой: Нельзя проверять 2 числа на равенство оператором =
    нельзя:

    const dx:double=143.201;
    const sx:single=143.201;
    begin
      assert(dx=sx);
    end;

     

  2. а для чего много pas файлов, почему все в одном не сделать, удобство или что 
    ЗЫ:
    У меня в текущем проекте 133 pas файла... не считая общих с другими проектами модулей... и это без учета сторонних компонент.
    и это не удобства ради, я для выживания :) когда разные несвязанные  сущности в одном месте - плохо как двигатель в салоне, бензобак под жопой, выхлопная в лицо, аккумулятор с серной кислотой на каленках...

     

  3. 1. Говорят - сначала сделай "какнибудь" - оптимизацию оставь на потом
    2. А книжку почитай... ООП там всякие... инкапсуляция там, переиспользование кода...

    по вашему списку
    1. Список счетов (желательно с оповещением статусов, типа как на СМС на ватсапе приходят)

    Кто их делать будет? Бекенд? На чем написан? или его нет?

    2. Онлайн каталог номенклатуры (калькулятор с разными расчетами, примерно как в Apk, думаю надо будет подробно объяснять как и что)
    Онлайн каталог ты получил выше...

    3. Раскрой листа (алгоритм я же сделал, просто внедрить): ввод списка с числами (габаритY, габаритX, кол-во) , показать изображение работы алгоритма:
    Прежде чем внедрять нужно понять к чему? Нафега клиенту твой алгоритм? Он не тебе материал экономит, а себе деньги... Сущьность какая? Заказ? список деталей? детали круглые/квадратные/в форме котиков?
    Кто раскрой делать будет? Клиент - ему это нафиг ненадо, хоть 1 деталь на лист. Бекенд? Админский фронтэнд? На чем написан? или его нет?

    4. Контакты (просто текстовая информация с ссылками)

    Тупо вывести на экран как Hello world...

    5. Отзыв (отправка текста мне на почту)

    Кто почту отправлять будет? Бекенд? На чем написан? или его нет?

    6. Загрузка файлы xls (прайс)

    Кто и главное куда (база) парсить будет? Бекенд? На чем написан? или его нет?

    Рано тебе клиентское приложение делать - я тебя бекенда нет по 1,3,5,6 пунктам...

    и того 2 или даже 3 программы: бекенд, клиентская часть, и одминка для приемщика заказа
    причем править имеющийся бекенд сайта тебе править низя :) иначе ты бы послушался и не парсил html а запилил нормальный JSON в нужном формате

     

  4. делаю перетаскивание внутри скрола.
    в момент MouseDown таскаемого контрола надо отключить скролирование скрола...
    что не делаю скролится.
    пока сделал TOpenAniCalculations(vSB.AniCalculations).TouchTracking := [];
    но если можно "правильнее" - жду ответа

  5. tmemo убери! TStringList возьми. распарсить без визуальных компонент! т.е. пока парсишь ничего ListBox не добавляешь

    1. Данные сохраняем в TStringList
    2. в потоке парсим и добавляем в другой TStringList  Item.Text '=' item.ItemData.Detail 

    3. в основном потоке вынимаем строки из второго TStringList в ListBox

  6. В 08.03.2020 в 06:10, Dmitry Stolyarov сказал:

    ничего не получается, что не так?

    обычно ничего не получается сопровождается текстом: 'Ошибка сети: '+E.Message или lResponse.StatusCode

    Почувствуй разницу:
    у мена ошибка с текстом " " в строке n, снифаю - все уходит но не сервер не сохраняет, помогите мне,
    ой все! ничего не работает! вот мой высер, доделайте за меня... ну че, слабаки! не могете?

  7. function IntEncode(const S, pwd: String): String;
    var
      i, iimax: integer;
      B, BPwd: TBytes;
    begin
      B:= TEncoding.Default.GetBytes(S);
      BPwd:= System.Hash.THashMD5.GetHashBytes(pwd);
      iimax:= High(BPwd);
      for i:= Low(B) to High(B) do
        B[i]:= B[i] Xor BPwd[i Mod iimax];
      result:= TNetEncoding.Base64.EncodeBytesToString(B);
    end;

    TBytes "магический" тип как строка: работает + 

  8. 30 минут назад, IgorK11 сказал:

    {$IFDEF ANDROID} for i:= 0 to Length(S)-1 do begin {$ELSE} for i:= 1 to Length(S) do begin {$ENDIF}

    1. for i:= low(s) to high(S) do
    2. не шифруй строку - шифруй байты B:=TEncoding.Default.GetBytes(S);
    $0030 (0) XOR $D0AF (Я) = $D09f - это блин шифрация половина текста плаинтекстом? у тебя хэш из латиницы с нулями в hi байте... 0 xor i = i
    русский текст есть в D0 и D1 диапазонах - так что HashString фикция

    делай на TBytes там нолей рандом

     

     

  9. Это "не стандартное" поведение, обычно клиент не сжимает, но RFC это не запрещает... но проверь поймет ли сервер твой запрос
    я использую deflate, gzip это тотже deflate столько с заголовками и CRC и заморочек в связи с этим больше...
     

    function CompressData(const Data:TBytes):TBytes;
    var Source, Dest:TBytesStream;
    begin
      Dest:= TBytesStream.Create;
      try
        Source:=TBytesStream.Create(Data);
        try
          ZCompressStream(Source, Dest, zcMax);
        finally
          Source.Free;
        end;
        Dest.Size:=Dest.Size;
        result:=Dest.Bytes;
      finally
        Dest.Free;
      end;
    end;
    
    //AHTUNG! Non standart Request Header (with standart Name)! If truble - Rename то X-Content-Encoding
      var Params:TBytes;
      if length(Params)>MinCompressionSize then
      begin
        Params:=CompressData(Params);
        NetHeaders.Value['Content-Encoding']:='deflate';
      end;

     

×
×
  • Создать...