Sashar333
Пользователи-
Постов
108 -
Зарегистрирован
-
Посещение
Весь контент Sashar333
-
точнее при смене значения в переменной BitmapSizeWitdh
-
Еще подскажите как правильно делать?: ошибка при повторном или при третьем вызове на строчке SetSize ошибку выдает что выше писал
-
Спасибо! Заменил!
-
GECTOR NEW.zip
-
Здравствуйте! Так не пойдет, 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 - возвращает все нужные данные для обработки пользователем
-
Не надо вникать во все)) проверьте, пожалуйста, правильно работы одного класса TSMC_Cutting, все равно иногда то зависает то вылетает, буду очень признателен...
-
Вот, вроде все получилось, посмотрите пожалуйста, правильно я мысль Вашу понял? GECTOR NEW.7z
-
Здравствуйте! Что то я запутываюсь, Вы не могли бы посмотреть, в правильном я направлении иду? Пока после кнопки "ButtonStartCutting" приложение не закрыть, но все же... хотя бы в общих чертах... GECTOR NEW.7z
-
Здравствуйте! А как лучше сделать передачу данных от пользователя(ГабаритY, ГабаритX, Кол-во) в вычислитель? Вычислитель обрабатывает отсортированный(сортирует по убыванию и ставит в флаги в массиве) массив, при этом он меняет в нем Кол-во, и флаги(что бы понимать когда остановиться)... и создает массив координат(для Bitmap) Сделать поток который будет преобразовывать полученные данные(в каком виде лучше?) в массив, а потом поток для сортировки, а потом поток для координат? Или передать уже готовый массив в поток, это вообще возможно?
-
Заработало! Спасибо!!!
-
Сделал по Вашему примеру проверку статуса, но почему то работает через раз. Допустим, по умолчанию стоит номер 11249, нажимаем Search, все выводит. Как меняем на 11250 то ошибку выдает. А если изначально поставить 11250 то работает нормально, можете проверить пожалуйста... GECTOR NEW.7z
-
Спасибо! В общем все понятно, знакомо и одновременно сложно. Нужны учитель и практика. Вот я и хочу, что-бы мне это приложение переписали грамотно, а потом изучить сам код. Пока изучаю gek.zip...
-
Так да! Только там все на олдскульном все написано, на моем родном)), так то все работает, но глючит и зависает, вылетает и т.д.. Надо это все как то грамотным языком переписать
-
В общем вставил картинку в этот bitmap в начале приложения, типа логотипа, там, видимо все автоматом настроилось, а потом уже выводит в нормальном масштабе! Сапсибо!
-
к сожалению нет таких зарплат.
-
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); НИКАКИХ ЗАКАЗОМ ПРИЕМОВ ЗАКАЗОМ ОТ КЛИЕНТА ПРИНИМАТЬ Не НАДО! это как визитная карточка с каталогом, списком счетов и калькулятором Парсить это пока, на сколько я понял, дешевле. Мне надо запустить приложение, чтобы работало, деньги со своего кармана, надеюсь клиенты привыкнуть к нему, то тогда, возможно, хозяин фирмы выделит другие средства для достойного приложения. как то так
-
какое Ваше предложение?
-
ну вот же, работает! все просто наверно)) хотя говорят что лучше ListView(без тормозов) или нет!? там и поиск с верху можно выставить.. а для чего много pas файлов, почему все в одном не сделать, удобство или что ?
-
30000
-
Так сверху все сообщил, если что еще надо скажите, задавайте вопросы... + свой apk выложил того что требуется (могу код выложить свой) 1. Список счетов (желательно с оповещением статусов, типа как на СМС на ватсапе приходят) 2. Онлайн каталог номенклатуры (калькулятор с разными расчетами, примерно как в Apk, думаю надо будет подробно объяснять как и что) 3. Раскрой листа (алгоритм я же сделал, просто внедрить): ввод списка с числами (габаритY, габаритX, кол-во) , показать изображение работы алгоритма: 4. Контакты (просто текстовая информация с ссылками) 5. Отзыв (отправка текста мне на почту) 6. Загрузка файлы xls (прайс) пока все вроде
-
Это я буду 5 лет изучать, может меньше)) А программа то нужна сейчас...
-
Может быть кто подскажет где и кто может обучить грамотному программированию?
-
Почему никто не хочет заняться данной задачей, это очень сложно!? Project1.apkвот что я примерно хочу видеть
-
сдался))
-
Продолжаю искать разработчика...