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

Требуется приложение на на все смартфоны


Рекомендуемые сообщения

20 минут назад, #WAMACO сказал:

Выложите хотя бы тех.задание сюда, что нужно сделать, народ посмотрит и сразу прикинет, сможет Вам написать программу или нет...

Так сверху все сообщил, если что еще надо скажите, задавайте вопросы... + свой apk выложил того что требуется (могу код выложить свой)

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

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

3. Раскрой листа (алгоритм я же сделал, просто внедрить): ввод списка с числами (габаритY, габаритX, кол-во) , показать изображение работы алгоритма:

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

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

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

пока все вроде

Ссылка на комментарий
  • Ответов 92
  • Создана
  • Последний ответ

Топ авторов темы

fg

3 часа назад, Sashar333 сказал:

Может быть кто подскажет где и кто может обучить грамотному программированию? 

если б все было так просто...

я приложил проект - загрузка вашего списка... работает под windows и android... под ios тоже будет (должно... возиться с маком и айфоном чета лень)

gek.zip

Ссылка на комментарий
17 минут назад, Sashar333 сказал:

Так сверху все сообщил, если что еще надо скажите, задавайте вопросы... + свой apk выложил того что требуется (могу код выложить свой)

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

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

3. Раскрой листа (алгоритм я же сделал, просто внедрить): ввод списка с числами (габаритY, габаритX, кол-во) , показать изображение работы алгоритма:

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

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

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

пока все вроде

и какой бюджет?

Ссылка на комментарий
50 минут назад, slav_z сказал:

fg

если б все было так просто...

я приложил проект - загрузка вашего списка... работает под windows и android... под ios тоже будет (должно... возиться с маком и айфоном чета лень)

gek.zip 63 \u043a\u0411 · 1 загрузка

ну вот же, работает! все просто наверно))

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

а для чего много pas файлов, почему все в одном не сделать, удобство или что ?

 

 

Ссылка на комментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Изменено пользователем Slym
Ссылка на комментарий

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

 

Ссылка на комментарий
12 минут назад, Slym сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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);
 

НИКАКИХ ЗАКАЗОМ ПРИЕМОВ ЗАКАЗОМ ОТ КЛИЕНТА ПРИНИМАТЬ Не НАДО!

это как визитная карточка с каталогом, списком счетов и калькулятором

Парсить это пока, на сколько я понял, дешевле. Мне надо запустить приложение, чтобы работало, деньги со своего кармана, надеюсь клиенты привыкнуть к нему, то тогда, возможно, хозяин фирмы выделит другие средства для достойного приложения. как то так

 

 

Ссылка на комментарий
4 часа назад, Sashar333 сказал:

а для чего много pas файлов, почему все в одном не сделать, удобство или что ?

вашему "вычислителю" должно быть все равно:

-откуда и как были получены исходные данные (скачаны по http, получены по почте, загружены из файла и т.п.)

-каков формат исходных данных (xls, json и т.д)

-как будет использован результат вычисления (показан пользователю в UI (на форме), отправлен как ответ http, записан в файл)

его работа - что-то посчитать и отдать результат...

советы: разбивайте программу на логические модули, минимизируйте зависимости между ними (представьте что у вас несколько разработчиков которые говнокодят каждый свою задачу в проекте, и сильносвязанный код этого просто не позволит вам сделать), не используйте русские буквы в тексте программы (даже для комментариев...  я как то смотрел исходники какого то японца - там все было на иероглифах - мне его комментарии не помогли), и про транскрипцию тоже забудьте (русские слова английскими буквами)... почитайте про декларативное программирование, когда реализуете какой-то общий алгоритм уберите подальше все детали реализации (условия, циклы, работа с массивами)... что делает ваша функция function DetIn() ? - по названию должно быть понятно..  не используйте сокращения в названиях переменных...   type TVSE=record - ну что это такое?

ОТДЕЛИТЕ логику программы от пользовательского интерфейса (не пишите логику программы в модуле формы - это беда программистов delphi) - вы должны иметь возможность легко заменить одну форму другой - это всего лишь объект для общения с пользователем... очень тяжелый совет: попробуйте написать ваше приложение как консольное...  а потом добавить в него GUI...

когда пишите программу всегда думайте как ее переписать лучше... не придумывайте окончательную архитектуру программы до получения первой работающей версии... только когда решите все проблемы сможете увидеть картину в целом... 

....я могу дать еще 1000 советов.... но сейчас вам от них станет только хуже...

Ссылка на комментарий
В 24.04.2020 в 18:24, Slym сказал:

Так у тебя уже все есть... кроме отправки почты (а с ней не все так просто как кажется, все борются со спамом)
Компонуй и получай свой гонорар :)
 

Так да! Только там все на олдскульном все написано, на моем родном)), так то все работает, но глючит и зависает, вылетает и т.д.. Надо это все как то грамотным языком переписать

Ссылка на комментарий
В 24.04.2020 в 19:17, slav_z сказал:

вашему "вычислителю" должно быть все равно:

-откуда и как были получены исходные данные (скачаны по http, получены по почте, загружены из файла и т.п.)

-каков формат исходных данных (xls, json и т.д)

-как будет использован результат вычисления (показан пользователю в UI (на форме), отправлен как ответ http, записан в файл)

его работа - что-то посчитать и отдать результат...

советы: разбивайте программу на логические модули, минимизируйте зависимости между ними (представьте что у вас несколько разработчиков которые говнокодят каждый свою задачу в проекте, и сильносвязанный код этого просто не позволит вам сделать), не используйте русские буквы в тексте программы (даже для комментариев...  я как то смотрел исходники какого то японца - там все было на иероглифах - мне его комментарии не помогли), и про транскрипцию тоже забудьте (русские слова английскими буквами)... почитайте про декларативное программирование, когда реализуете какой-то общий алгоритм уберите подальше все детали реализации (условия, циклы, работа с массивами)... что делает ваша функция function DetIn() ? - по названию должно быть понятно..  не используйте сокращения в названиях переменных...   type TVSE=record - ну что это такое?

ОТДЕЛИТЕ логику программы от пользовательского интерфейса (не пишите логику программы в модуле формы - это беда программистов delphi) - вы должны иметь возможность легко заменить одну форму другой - это всего лишь объект для общения с пользователем... очень тяжелый совет: попробуйте написать ваше приложение как консольное...  а потом добавить в него GUI...

когда пишите программу всегда думайте как ее переписать лучше... не придумывайте окончательную архитектуру программы до получения первой работающей версии... только когда решите все проблемы сможете увидеть картину в целом... 

....я могу дать еще 1000 советов.... но сейчас вам от них станет только хуже...

Спасибо! В общем все понятно, знакомо и одновременно сложно. Нужны учитель и практика. Вот я и хочу, что-бы мне это приложение переписали грамотно, а потом изучить сам код. Пока изучаю gek.zip...

Ссылка на комментарий
В 24.04.2020 в 13:03, slav_z сказал:

fg

если б все было так просто...

я приложил проект - загрузка вашего списка... работает под windows и android... под ios тоже будет (должно... возиться с маком и айфоном чета лень)

gek.zip 63 \u043a\u0411 · 3 загрузки

Сделал по Вашему примеру проверку статуса, но почему то работает через раз. Допустим, по умолчанию стоит номер 11249, нажимаем Search, все выводит. Как меняем на 11250 то ошибку выдает. А если изначально поставить 11250 то работает нормально, можете проверить пожалуйста... 

GECTOR NEW.7z

Ссылка на комментарий
8 часов назад, Sashar333 сказал:

Сделал по Вашему примеру проверку статуса, но почему то работает через раз. Допустим, по умолчанию стоит номер 11249, нажимаем Search, все выводит. Как меняем на 11250 то ошибку выдает. А если изначально поставить 11250 то работает нормально, можете проверить пожалуйста... 

Добавьте это (надо очистить поток от предыдущего результата.. похоже на ошибку в THTTPClient)

806202919_.png.4ef8cef94391ffe52d2579baed4274fb.png

Ссылка на комментарий
3 часа назад, Sashar333 сказал:

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

сделайте то же самое и при получении прайса....

а вот это можно вынести в отдельный метод...  типа CreateRequestContent(NumberOrder,dateOrder,....)

1314050328_.png.88d343df877d35d363dcbad37b9d42dd.png

 

Ссылка на комментарий
В 24.04.2020 в 19:17, slav_z сказал:

вашему "вычислителю" должно быть все равно:

-откуда и как были получены исходные данные (скачаны по http, получены по почте, загружены из файла и т.п.)

-каков формат исходных данных (xls, json и т.д)

-как будет использован результат вычисления (показан пользователю в UI (на форме), отправлен как ответ http, записан в файл)

его работа - что-то посчитать и отдать результат...

 

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

А как лучше сделать передачу данных от пользователя(ГабаритY, ГабаритX, Кол-во) в вычислитель?

Вычислитель обрабатывает отсортированный(сортирует по убыванию и ставит в флаги в массиве) массив, при этом он меняет в нем Кол-во, и флаги(что бы понимать когда остановиться)... и создает массив координат(для Bitmap)

Сделать поток который будет преобразовывать полученные данные(в каком виде лучше?) в массив, а потом поток для сортировки, а потом поток для координат?

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

 

Ссылка на комментарий
8 часов назад, Sashar333 сказал:

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

А как лучше сделать передачу данных от пользователя(ГабаритY, ГабаритX, Кол-во) в вычислитель?

Вычислитель обрабатывает отсортированный(сортирует по убыванию и ставит в флаги в массиве) массив, при этом он меняет в нем Кол-во, и флаги(что бы понимать когда остановиться)... и создает массив координат(для Bitmap)

Сделать поток который будет преобразовывать полученные данные(в каком виде лучше?) в массив, а потом поток для сортировки, а потом поток для координат?

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

 

массив и передавайте...  использовать поток нужно если вычисления займут значительное время (будет влиять на работу UI... т.е будет заметно что приложение подвисает... можете кинуть анимацию на форму... сразу поймете...) если вычисления будут быстрыми, то не делайте поток... не используйте потоки если это ничего не даст (к примеру время обработки данных - 1 мс.)... если поток все же потребуется, то просто используйте ваш массив в потоке...  само собой если массив будет меняться, то нельзя с ним работать в основном (других) потоках до окончания обработки...

Ссылка на комментарий
17 часов назад, slav_z сказал:

массив и передавайте...  использовать поток нужно если вычисления займут значительное время (будет влиять на работу UI... т.е будет заметно что приложение подвисает... можете кинуть анимацию на форму... сразу поймете...) если вычисления будут быстрыми, то не делайте поток... не используйте потоки если это ничего не даст (к примеру время обработки данных - 1 мс.)... если поток все же потребуется, то просто используйте ваш массив в потоке...  само собой если массив будет меняться, то нельзя с ним работать в основном (других) потоках до окончания обработки...

Здравствуйте! Что то я запутываюсь, Вы не могли бы посмотреть, в правильном я направлении иду? Пока после кнопки "ButtonStartCutting" приложение не закрыть, но все же... хотя бы в общих чертах...

GECTOR NEW.7z

Ссылка на комментарий
20 часов назад, slav_z сказал:

массив и передавайте...  использовать поток нужно если вычисления займут значительное время (будет влиять на работу UI... т.е будет заметно что приложение подвисает... можете кинуть анимацию на форму... сразу поймете...) если вычисления будут быстрыми, то не делайте поток... не используйте потоки если это ничего не даст (к примеру время обработки данных - 1 мс.)... если поток все же потребуется, то просто используйте ваш массив в потоке...  само собой если массив будет меняться, то нельзя с ним работать в основном (других) потоках до окончания обработки...

Вот, вроде все получилось, посмотрите пожалуйста, правильно я мысль Вашу понял?

GECTOR NEW.7z

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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