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

Sashar333

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

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

  • Посещение

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

  1. Здравствуйте!.Delphi 10.2. Android 6 (Xiaomi Redmi note 4)

    программирую раз в год, уровень языка минимальный, наверно.

    код:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    {$IFDEF MSWINDOWS}
    pflog:='log.bas';
    pfmem:='mem.mem';
    pfprod:='prod.txt';
    pfpost:='post.txt';
    {$ELSE} {$IFDEF IOS}
    //код для мобильной платформы iOS
    {$ELSE} {$IFDEF ANDROID}
    pflog:=Tpath.GetDocumentsPath+pathdelim+'log.bas';
    pfmem:=Tpath.GetDocumentsPath+pathdelim+'mem.mem';
    pfprod:=Tpath.GetDocumentsPath+pathdelim+'prod.txt';
    pfpost:=Tpath.GetDocumentsPath+pathdelim+'post.txt';
    {$ENDIF}
    {$ENDIF}
    {$ENDIF}

    memo1.Text:='';
    if not(fileexists(pfmem)) then memo1.Lines.SaveToFile(pfmem);
    memo1.Lines.LoadFromFile(pfmem);
    if memo1.Lines.Count=0 then memo1.Lines.Add('01.01.0001');
    label1.Text:=memo1.Lines[0];
    IdIMAP41.Connect(); - тут программа вылетает
    //ComboBox1.Items.LoadFromFile(pfprod);
    //ComboBox2.Items.LoadFromFile(pfpost);
    //loadlist;
    end;

    Задача проста: найти письмо и скачать вложение, для дальнейшей обработки.

    При запуске на Windows 8 все работает нормально, после установки apk и запуска на телефоне программа вылетает при IdIMAP41.Connect()

    Менял на pop3 тоже самое

    Подскажите пожалуйста в чем может быть проблема? Может есть другие варианты для загрузки почты?

    Заранее спасибо!

     

  2. Здравствуйте!

    Помогите разобраться пожалуйста.

    Delphi 10.1 и 10.2, Windows

    Программа прекрасно работала и программировалась.

    Добавил две колонки в StringGrid:

    image.png.4d799240c83e669658eb18993d1184b2.png

    сразу понял что не красиво и попытался их удалить(ничего в программе больше не менял и не добавлял!?) таким образом:

    image.png.f4253aa1e58189bbff3bf98a111893c4.png

    но после нажатии кнопки "Delete" получил сообщение:

    image.png.3ed2d2674a4fb4fe8d6f2bde11be85e3.png

    дальше программировать, данный проект, нет возможности из таких сообщений и дальнейших разрушительных сбоев

    при новой загрузке проекта в DELPHI все работает и запускается, Project1.exe из Debug'а тоже работает.

    Но стоит только в DELPHI попытать что то сделать(бывает достаточно навести курсор мыши) с именно этим StringGrid то сразу выдает ошибки:

    image.png.b26cc4640be83faadf269e0749aa0d05.png

    image.png.07bcff6db19ff901e65436c33287487e.png

    помогает полное удаление StringGrid но так как 

    это не в первый раз и в разных версиях это сильно напрягает

    переустановки delphi не помогают

    может кто знает в чем дело?

    Заранее спасибо за ответ...

  3. 11 час назад, Fedor K сказал:

    Из приведенного выше кода ничего вручную удалять не нужно, кроме самого TListBoxItem, как и выполняется в примере выше (listbox1.Items.Delete(indexclick) или Form1.listbox1.Items.Delete(0)) . Все создаваемые дополнительные контролы (TGridPanelLayout, TRectangle, TText) создаются здесь с AOwner = TListBoxItem + задается Parent, который мы и удаляем, а при удалении родительского все дочерние удаляются вместе с ним. Можете убедиться в этом проверив утечку памяти: 

    
    ReportMemoryLeaksOnShutdown := True;

    Sashar333 не используйте никогда .Name в качестве хранилища или идентификатора, это плохая практика. Для этих целей отлично подходят тэги (TagString или TagFloat), которые имеют все TFmxObject.

     

    с .Name понятно, буду переделывать, спасибо!

    Но если "...а при удалении родительского все дочерние удаляются вместе с ним. Можете убедиться в этом проверив утечку памяти" почему тогда ругается на дублирование имени...

  4. Здравствуйте!

    Есть ListBox1, на нем разное кол-во tlistboxitem'ов, на каждом tlistboxitem'е есть один tgridpanellayout состоящий из четырех колонок и одной строчи, в каждой колонке

    по одному trectangle, в каждом trectangle по одному ttext с именами по очереди типа 'w'+IntToStr(Item.index), 'l'+IntToStr(Item.index), 'k'+IntToStr(Item.index)

    такие имена для Ttext требуются для дальнейшей обработки и распознования, в каждом Ttext надпись, на примере "-","2","2","Х" :

    5942d330166d9_.PNG.7ed637728fd90f80f0d14eabace08bdc.PNG

    при нажатии на текст "Х" удаляется tlistboxitem c помощью listbox1.Items.Delete(indexclick)

    Проблема следующая, при создании нового итема пишет дубликат имени Ttext, я так понял что итем удалился а то что на нем -нет

    как можно быстро удалить и итем и то что на нем находилось? Пример создания итема:

    procedure addrazmer(zap:typezap);
    var item:tlistboxitem;
        pg:tgridpanellayout;
        t1,t2,t3,t4:ttext;
        al:talignlayout;
        r1,r2,r3,r4:trectangle;
        i:integer;
    begin
    form1.listbox1.BeginUpdate;
    while Form1.listbox1.Count<>1 do Form1.listbox1.Items.Delete(0);
    
    for i := 0 to length(zap.razmer)-1 do
    begin
     item:=tlistboxitem.Create(form1.listbox1);
     item.Height:=30;
     pg:=tgridpanellayout.Create(item);
     pg.RowCollection[1].Value:=0;
     pg.ColumnCollection.Add;pg.ColumnCollection[2].Value:=50;
     pg.ColumnCollection.Add;pg.ColumnCollection[3].Value:=10;
     pg.Parent:=item;
     pg.Align:=al.alClient;
     r1:=trectangle.Create(pg);
     r2:=trectangle.Create(pg);
     r3:=trectangle.Create(pg);
     r4:=trectangle.Create(pg);
     r1.Parent:=pg;r1.Align:=al.alClient;
     r2.Parent:=pg;r2.Align:=al.alClient;
     r3.Parent:=pg;r3.Align:=al.alClient;
     r4.Parent:=pg;r4.Align:=al.alClient;
     t1:=ttext.Create(r1);
     if zap.tip<>'Лист' then
      Begin
       t1.Enabled:=false;
       t1.Text:='-';
      End
     else
      Begin
       t1.text:=floattostr(zap.razmer.witdh);
      end;
     t2:=ttext.Create(r2);t2.text:=floattostr(zap.razmer.length);
     t3:=ttext.Create(form1);t3.Text:=floattostr(zap.razmer.kol);
     t4:=ttext.Create(form1);t4.Text:='X';
    
     t1.Parent:=r1;t1.OnClick:=form1.CliskRazmerClick;
     t2.Parent:=r2;t2.OnClick:=form1.CliskRazmerClick;
     t3.Parent:=r3;t3.OnClick:=form1.CliskRazmerClick;
     t4.Parent:=r4;t4.OnClick:=form1.DeleteItemClick;
    
     t1.Align:=al.alClient;
     t2.Align:=al.alClient;
     t3.Align:=al.alClient;
     t4.Align:=al.alClient;
     form1.listbox1.InsertObject(form1.listbox1.Items.Count-1,item);
     t1.Name:='w'+IntToStr(item.Index);
     t2.Name:='l'+IntToStr(item.Index);
     t3.Name:='k'+IntToStr(item.Index);
    end;
    form1.listbox1.EndUpdate;
    end; 

    Заранее спасибо!

  5. 1 час назад, krapotkin сказал:

    из интернета написано, что idHTTP по SSL на андроиде работать не будет. Используйте THttpClient

    кодировка в ответе должна зависеть от того, как вы настроите запрос. для этого есть заголовки HTTP. Так что ничего перекодировать обычно не нужно.

    и у idHTTP и у THttpClient есть даже несколько свойств, которые транслируются в эти заголовки, например AcceptCharset

     

    Спасибо большое! так и сделал, все заработало!

  6. 6 минут назад, krapotkin сказал:

    а зачем эти все UTF to Ansi ??

    это под windows проект?

    SSL настроен правильно?

    без UTF to Ansi иероглифы получаются

    приложение под пока Android

    в SSL плохо разбираюсь(все из интернета) но судя по тому что все работает отлично, кроме не корректных запросов, думаю что да...

  7. Здравствуйте! Вопрос такой:

    Есть процедура:592c2192335f9_.JPG.c9b84de82a76a19837c9cb786b83e48c.JPG

    Если переменные inn,capcha и capchaToken указаны правильно то Idhttp работает как надо, если inn или capcha не верны то прим Idhttp.post программа выдает ошибку:

    592c227c06ae0_2.JPG.dd3e9947ae93e29e9b144f06608f4e51.JPG

    а хочется получить данные как в анализаторе:

    592c234995b42_3.JPG.79e0b51e6762c50d962164748deff8cf.JPG

    Как можно это сделать? 

  8. В Delphi XE8 все приложения компилировались нормально и работали при любой смене ориентации телефона!

    Переустановил XE8 на 10,1 Berlin, теперь все компилированные приложения(включая ранние) при смене ориентации вылетают

    Такое ощущение что проблема в Delphi. но что не могу понять...

    То есть если запускать или компилировать приложение при любой ориентации, то оно запустится и работает нормально, но стоит только повернуть телефон то сразу оно закрывается!

    Пробовал и пустую форму и примеры DelphI проекты, все закрывается при смене. И разные стили менял

    Все приложения из Play Маркета работают отлично.

    В чем может быть проблема? версия андройда 6.0 модель Redmi Note 4

  9. Здравствуйте!

    Есть замечательная русская программа ТЕХТРАН: http://www.tehtran.com/nestf.html

    Мне нужен максимум такой же - минимум что предложите алгоритм (раскладки деталей на листе) работы в DELPHI что бы я его мог сам в дальнейшем исправлять и доделывать

    ТРЕБУЕТСЯ ТОЛЬКО АЛГОРИТМ ЗАПОЛНЕНИЯ ПРЯМОУГОЛЬНИК ОПРЕДЕЛЕННЫМИ КОНТУРАМИ, вся программа ТЕХТРАН у меня уже есть.

    Будут входные данные:

    1. Минимум это простейшие фигуры:размеры прямоугольников и окружностей - максимум это фигуры сложной формы в формате DXF(AutoCad) и их количества(примерно безгранично) для каждой фигуры будут параметры:
    • Размеры(для простейших это толщина,ширина и длина; для DXF это толщина и файл DXF) - все в миллиметрах
    • Кол-во (шт)
    1. Размер листа прямоугольный(пример: 10х1500х6000мм, 5х2000х3000мм, 100х100х3000мм) и их кол-во, скажет так первое значение  это толщина, второе - ширина, третье - длинна.
    2. Разрешенные расстояния между фигурами и от края листа до фигур - все в миллиметрах

    Кол-во данных должно быть примерно безгранично

    На выходе надо получить требуемое-подходящее минимальное кол-во листов для всех фигур!

    Ну и соответственно визуализировать результат например на TImage

    592826fb7bbac_.thumb.JPG.d666fd8dc1da5a86c46fda5dfd9b3373.JPG

    Это не полное техзадание, но сколько примерно это будет стоить?

    Хотелось бы использовать это модуль на всех платформах, но как минимум это Windows.

    Заранее спасибо!

     

  10. 3 часа назад, Равиль Зарипов (ZuBy) сказал:

    При открытии/ворачивании в приложение очисти буфер

    Требуется только TEditы(возможно определенные)

    в приложении есть TMemo, там должно все работать

  11. 1 час назад, Равиль Зарипов (ZuBy) сказал:

    хотите сделать чтобы всегда показывалась нижняя строчка?

    нет, надо чтобы просто String обновился с выбранным фильтром без вылетов, с первой строчки...

    Может можно сделать такой вариант: При выборе(фокусе) Combobox чтобы останавливалась  прокрутка, как там можно сделать?

  12. Здравствуйте! Delphi 10.1 Berlin, android 6

    Есть СomboBox, в нем выбираю фильтр для вывода в StringGrid списка из файла базы.

    При выборе в ComboBox "ВСЕ" - StringGrid заполняется большим! списком, который соответственно можно прокручивать по инерции

    Есть выбор "1" в ComboBox, при котором StringGrid заполняется всего несколькими записями, которые умещаются в пол экрана(которые не прокручиваются)

    Момент такой: Если StringGrid прокручивается по инерции(с выбором "ВСЕ"), а в этот момент выбрать выбор "1"  то  приложение вылетает (на android)

    Я так понял это из-за того что Stringу нечего прокручивать!?

    Подскажите пожалуйста решение этой проблемы . Заранее спасибо!

  13. 1 час назад, AliZairov сказал:

    Привет. Я использую самый так. Более стабильная.

    
    function checkNetwork: Boolean;
    var
      TCP: TIdTCPClient;
    begin
      Application.ProcessMessages;
      TCP := TIdTCPClient.Create(nil);
      try
        TCP.ReadTimeout := 2000;
        TCP.ConnectTimeout := 2000;
        TCP.Port := 80;
        TCP.Host := 'google.com';
        TCP.Connect;
        TCP.Disconnect;
        Result := True;
      except
        Result := False;
        TCP.Free;
      end;
    end;

     

    Этот вариант у меня почему то работает только в WINDOWS, на смартфоне приложение вылетает

  14. 9 минут назад, ENERGY сказал:

     

    В правой панели выберите платформу Android, а не Windows.

    Спасибо заработало!

    Я почему то решил что это и под WINDOWS тоже сработает, но видимо нет.

    Правда пришлось еще файлы кое какие добавлять в папку проекта

    Может заодно подскажете:

    1) где в настройках DELPHI прописать пути для проекта к файлам, допустим которые находятся здесь:

    C:\Program Files (x86)\Embarcadero\Studio\18.0\source\rtl

    Чтобы не копировать их в папку проекта

    2) apk файл после выполнения компиляции второго варианта ( https://github.com/AndrewEfimov/Android-API/tree/master/ActiveNetworkInfo ) занимает более 7мб

     это нормально?

  15. 25 минут назад, Andrey Efimov сказал:

    Ну, не знаю где вы накосячили, но я сегодня как раз добавлял свой класс в проект и всё отлично работает...

    Что значит все Pasы?

    Если второй вариант у вас, это https://github.com/AndrewEfimov/Android-API/tree/master/ActiveNetworkInfo, то нужно:

    • положить файл ActiveNetworkInfo.Android.pas в папку вашего проекта
    • подключить этот файл в Uses вашего проекта
    • использовать в коде проекта - TActiveNetworkInfo.метод (например, TActiveNetworkInfo.IsConnected)

     

    p.s. Использую Delphi Berlin 10.1 Update 2

    После "положить файл ActiveNetworkInfo.Android.pas в папку вашего проекта" и подключение в Uses начинает ругаться на нехват Androiapi. и Posix. , наверно не настроен Delphi?, по этому все эти PASы добавил в папку.

    Далее начинает ругаться на Posix.StdDef.size_t; и Psize_t = Posix.StdDef.Psize_t;

     

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