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

Sashar333

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

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

  • Посещение

Весь контент Sashar333

  1. Еще подскажите как правильно делать?: ошибка при повторном или при третьем вызове на строчке SetSize ошибку выдает что выше писал
  2. Здравствуйте! Так не пойдет, GetInfoCut хранит массивы координат и размеров прямоугольников, и пользователь, кнопками Previous и Next, "бегает" по массиву : Делаю так: и так: но если запустить программу, нажать StartCutting, поменять значение с 1500 на 2000, нажать StartCutting, поменять с 2000 на 3000, нажать StartCutting то вылетает ошибка: GetInfoCut.SetArrayFromUser(ListDetails) - загружает(передает) массив с размерами в переменную в класс, которая вычисляется в GetInfoCut.Execute; GetInfoCut.SetFlagsAndParametersCut(StrToInt(Edit2.Text),StrToInt(Edit3.Text),20) - устанавливаются параметры обработки(Ширина листа и длина): GetInfoCut.SortList - сортировка для увеличения КПД вычислителя GetInfoCut.Execute - запуск вычислителя Procedure TSMC_Cutting.SetFlagsBreaksAndWillNotFit(var Detail:TDetail) - установка флагов типа boolean (Detail.WillNotFit - деталь в принципе не влезет в установленные ширину и длину, Detail.Breaks - деталь не влезет в определенный момент вычисления в "остаток", при нужде Breaks восстанавливает флаг, WillNotFit - не изменим!) function ArrayDetailsNotFree(ArrayDetails:array of TDetail):boolean - проверка на наличие не просчитанных деталей, исключая WillNotFit function max(y,x,y2,x2:double):double - вычисление максимального числа (КИМ - коэффициент использования материала) function TSMC_Cutting.GetDetailCuttingResult(numList,LayoutWitdh,LayoutLength,LenghtLayoutMax:integer;var Detail:TDetail;StockAllowance:integer):TDetailCuttingResult- главное вычисление расположения детали из цикла в определенный габарит, тут лучше ничего не трогать)) два года придумывал. Тут же вычисляются координаты для рисования и сохраняются в конце в ResutlForUser.ArrayForPaint function TSMC_Cutting.CuttingDetails(NumberSheet,LayoutWitdh,LayoutLength,LenghtLayoutMax:integer;var ArrayDetails:array of TDetail;StockAllowance:integer) - главная рекурсивная функция по деталям и вычисляемым остаткам листа, вызывает предыдущую функцию три раза, тут лучше тоже ничего не менять. function StopFitDetails(ArrayDetails:array of TDetail):boolean - проверка на отсутствие деталей для вычисления, исключая WillNotFit procedure SetBreaksToTrue(var ArrayDetails:array of TDetail); - обнуляем флаг на true для всех деталей, когда вычисляем НЕ из остатка а с цельного листа Function TSMC_Cutting.Execute:TResultForUser - возвращает все нужные данные для обработки пользователем
  3. Не надо вникать во все)) проверьте, пожалуйста, правильно работы одного класса TSMC_Cutting, все равно иногда то зависает то вылетает, буду очень признателен...
  4. Вот, вроде все получилось, посмотрите пожалуйста, правильно я мысль Вашу понял? GECTOR NEW.7z
  5. Здравствуйте! Что то я запутываюсь, Вы не могли бы посмотреть, в правильном я направлении иду? Пока после кнопки "ButtonStartCutting" приложение не закрыть, но все же... хотя бы в общих чертах... GECTOR NEW.7z
  6. Здравствуйте! А как лучше сделать передачу данных от пользователя(ГабаритY, ГабаритX, Кол-во) в вычислитель? Вычислитель обрабатывает отсортированный(сортирует по убыванию и ставит в флаги в массиве) массив, при этом он меняет в нем Кол-во, и флаги(что бы понимать когда остановиться)... и создает массив координат(для Bitmap) Сделать поток который будет преобразовывать полученные данные(в каком виде лучше?) в массив, а потом поток для сортировки, а потом поток для координат? Или передать уже готовый массив в поток, это вообще возможно?
  7. Сделал по Вашему примеру проверку статуса, но почему то работает через раз. Допустим, по умолчанию стоит номер 11249, нажимаем Search, все выводит. Как меняем на 11250 то ошибку выдает. А если изначально поставить 11250 то работает нормально, можете проверить пожалуйста... GECTOR NEW.7z
  8. Спасибо! В общем все понятно, знакомо и одновременно сложно. Нужны учитель и практика. Вот я и хочу, что-бы мне это приложение переписали грамотно, а потом изучить сам код. Пока изучаю gek.zip...
  9. Так да! Только там все на олдскульном все написано, на моем родном)), так то все работает, но глючит и зависает, вылетает и т.д.. Надо это все как то грамотным языком переписать
  10. В общем вставил картинку в этот bitmap в начале приложения, типа логотипа, там, видимо все автоматом настроилось, а потом уже выводит в нормальном масштабе! Сапсибо!
  11. 1-2 Понял По списку: 1. Список делает пользователь(П) путем ввода номера счета от 1 до 20000+. str.Add('numberOrder='+Form1.Edit1.Text); str.Add('dateOrder='+copy(datetoStr(now),0,2)); str.Add('monthOrder='+copy(datetoStr(now),4,2)); str.Add('yearOrder='+copy(datetoStr(now),7,4)); tt:=TStringList.Create(); tt.LoadFromStream(net.Post('https://gector-spb.ru/checkZakaz.php',str).ContentStream,TEncoding.UTF8); даты поиска счета задается пользователем, по умолчанию (now-30 : now) 2. Есть 3. Задача рассчитать сколько надо листа и сообшть-показать их пользователю(П). П вводит толщину, ширину и длину расчетного листа, т.е. всего один расчетный габарит, допустим 20х2000х6000 или 2х1250х2500 или 10х1500х3000, как правило максимум 2000х6000 и вводит список прямоугольников: 250х130 -10шт, 160х500 - 10шт и т.д., условно бесконечное коли-во. Фигурные не требуется! Алгоритм рассчитывает сколько надо листов которые указаны в начале расчета, т.е. клиент зная кол-во листов сможет их указать в калькуляторе и узнать сколько будет он стоить Вот кусок моего рабочего алгоритма (отдельный unit.pas): function DetIn(numList,vy,vx,nebolee:integer;var det:tmasdet;prip:integer):tDetin; var i,newposy,newposx:integer; tmp:tmasdet; kol,kimY,kimX,kimY2,kimX2:double; revers:boolean; begin kol:=0;result.Влезло:=0;result.остY:=vy;result.испX:=0; revers:=false;newposx:=posx;newposy:=posy; kimy:=0;kimx:=0; if vx<=0 then begin if (det.gy+prip)<=nebolee then begin kol:=trunc(vy/(det.gx+prip)); if kol>det.kol then kol:=det.kol; kimX:=kol*((det.gy+prip)*(det.gX+prip)); kimX:=kimX/(Vy*(det.gY+prip)); end else kimx:=0; if (det.gx+prip)<=nebolee then begin kol:=trunc(vy/(det.gy+prip)); if kol>det.kol then kol:=det.kol; kimY:=kol*((det.gy+prip)*(det.gX+prip)); kimY:=kimY/(Vy*(det.gX+prip)); end else kimy:=0; if (kimy=0)and(kimx=0) then det.влезает:=false; end; if vx>0 then begin if ((det.gy+prip)<=vx) then begin kol:=trunc(vy/(det.gx+prip)); if kol>det.kol then kol:=det.kol; kimX:=kol*((det.gy+prip)*(det.gX+prip)); kimX:=kimX/(Vy*Vx); end else kimX:=0; if ((det.gx+prip)<=vx) then begin kol:=trunc(vy/(det.gy+prip)); if kol>det.kol then kol:=det.kol; kimY:=kol*((det.gy+prip)*(det.gX+prip)); kimY:=kimY/(Vy*Vx) end else kimY:=0; if ((det.gy+prip)<=vy) then begin kol:=trunc(vx/(det.gx+prip)); if kol>det.kol then kol:=det.kol; kimX2:=kol*((det.gy+prip)*(det.gX+prip)); kimX2:=kimX2/(Vy*Vx) end else kimX2:=0; if ((det.gx+prip)<=vy) then begin .... вызывается так:VSE:=play(StrToInt(Edit9.Text),StrToInt(Edit10.Text),masdet,i); где type tmasdet=record gy,gx,kol:integer; влезает:boolean; НИКАК:boolean; end; var masdet:array of tmasdet; type TVSE=record ширина:integer; припуск:byte; КолЛист:array of integer; - тут кол-во требуемых листов МассивДляРис:array of trismas; - координаты в мм всей раскладки МассивДет0:array of tmasdet; МПРезки:integer; длина все контуров всех прямоугольников 4. Да 5. Просто анонимное письмо из Memo мне на почту 6. Прайс просто скачать на устройство в папку download, и сразу открыть для просмотра, если это возможно устройством net.Get('https://gector-spb.ru/assets/files/price.xls',resultStream); НИКАКИХ ЗАКАЗОМ ПРИЕМОВ ЗАКАЗОМ ОТ КЛИЕНТА ПРИНИМАТЬ Не НАДО! это как визитная карточка с каталогом, списком счетов и калькулятором Парсить это пока, на сколько я понял, дешевле. Мне надо запустить приложение, чтобы работало, деньги со своего кармана, надеюсь клиенты привыкнуть к нему, то тогда, возможно, хозяин фирмы выделит другие средства для достойного приложения. как то так
  12. ну вот же, работает! все просто наверно)) хотя говорят что лучше ListView(без тормозов) или нет!? там и поиск с верху можно выставить.. а для чего много pas файлов, почему все в одном не сделать, удобство или что ?
  13. Так сверху все сообщил, если что еще надо скажите, задавайте вопросы... + свой apk выложил того что требуется (могу код выложить свой) 1. Список счетов (желательно с оповещением статусов, типа как на СМС на ватсапе приходят) 2. Онлайн каталог номенклатуры (калькулятор с разными расчетами, примерно как в Apk, думаю надо будет подробно объяснять как и что) 3. Раскрой листа (алгоритм я же сделал, просто внедрить): ввод списка с числами (габаритY, габаритX, кол-во) , показать изображение работы алгоритма: 4. Контакты (просто текстовая информация с ссылками) 5. Отзыв (отправка текста мне на почту) 6. Загрузка файлы xls (прайс) пока все вроде
  14. Это я буду 5 лет изучать, может меньше)) А программа то нужна сейчас...
  15. Может быть кто подскажет где и кто может обучить грамотному программированию?
  16. Почему никто не хочет заняться данной задачей, это очень сложно!? Project1.apkвот что я примерно хочу видеть
×
×
  • Создать...