Решено: Кроссплатформеность проекта - как ее добиться?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Решено: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 17:26:04

Вот простая программа которую я написал под виндой в версии lazarus 1.4.4. https://cloud.mail.ru/public/5Fs9/MuRFfPyxY
Я скопировал проект под убунту и хочу открыть в версии 1.0.4. Ни внешняя форма, ни исходный код не открывается. Программа компилируется из проекта в формат pypar2 и запускается из lazarus под убунтой. Только кода нет.
Вопрос, чо я делал не так? Как добиться чтобы код появился? Нормально ли что в формат pypar2 компилируется? зы ну и вдруг кто знает, есть ли жизнь на марсе?
----------------------
Решено:
pypar2 - это моя вина, сам питон поставил.
1. открыть проект (ничего нет); 2. проект, просмотреть исходный код проекта; 3. проект, инспектор проекта - там потыкать всё подряд. После этого код и форма есть. Круто. Только перед первым запуском надо сперва вручную скрмпилировать.
Последний раз редактировалось azsx 18.11.2015 20:16:06, всего редактировалось 2 раз(а).
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение vitaly_l » 18.11.2015 18:01:52

azsx писал(а):есть ли жизнь на марсе?

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

Касаемо предыдущих вопросов: А вы пробовали программы из под windows запускать в досе? И что? Программы не работали? <=== Вот!!! ===> В этом возможно и кроется причина отсутствия жизни на марсе, просто жизнь на Марсе была в другой системе координат... И марсиане не знали что число Пи равно 3.14 и ещё какие-то там цифры, после 14. Так вот, предположим, версия Лазаруса 1.0.4 - это дос... а версия Лазаруса 1.4.4 - это windows. Соответственно Windows это Земля а Дос это Марс...

Вывод: И вышесказанного следует что, жизнь на Марсе возможна, но она не такая как на Земле... т.к. программы из под Windows не хотят работать в Дос. А тем более в Линуксе, нужно подключать специфические библиотеки Линукса и отключать ненужные библиотеки Windows...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение Лекс Айрин » 18.11.2015 18:09:34

Если честно, то программа кажется странноватой...

Хотя в винде и работает...
Вопросы:
Зачем использовать TEdit вместо TSpinEdit?
Зачем хранить длину пароля в строке?
ах да... зачем проверка на количество паролей? тем более, что она как-то странно реализована.


Советы
Используй для счетчиков цикла не Integer, а Byte -- я сомневаюсь, что цикл будет крутиться больше 250 раз.
Главной сделай процедуру генерации одного пароля а не множества, а уже ее вызывай много раз -- Это проще...
обнуление переменной i, в принципе, бесполезная работа -- она и так переустанавливается в начале каждого цикла.
procedure generirui (); -- скобки лишние.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 18:14:10

А тем более в Линуксе, нужно подключать специфические библиотеки Линукса и отключать ненужные библиотеки Windows...

вот теперь бы узнать какие библиотеки, куда подключать и почему lazarus обзывают кроссплатформенным кодом, назвали бы (лазарус запускаемый в винде имеет несовместимый аналог под линукс) и ноль проблем. А ведь я читаю, что лазарус имеет именно кроссплатформеный код. И прогамма у меня простая, какие там нафиг библиотеки? И компилируется проект под никс, только поправить не получается.
на Марсе жизни нет, т.к. там уже давно ползает фигня системы марсоход и она ничего живого не обнаружила.

очень много свидетельств, что для паблика сливают фотки невадской пустыни, где ползает аналог марсохода.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение vitaly_l » 18.11.2015 18:18:50

azsx писал(а):для паблика сливают фотки невадской пустыни, где ползает аналог марсохода

Вы хотите сказать что гопники зажали фото от хакеров? И я по Вашему должен в "это" поверить? после того как хакеры взломали притон гопников из пентагона? Вы уверены, что кто-то что-то может скрыть с Марса?

Касаемо, необходимых библиотек... народ подскажет, т.к. Линукс - это не моя песня. Но там нужно заменить как минимум одну Windows на нужную из Линукс. Точнее не заменить, а там конструкция типа if then else
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение Лекс Айрин » 18.11.2015 18:29:25

vitaly_l, ну вот зачем вы так? Программа, несмотря на то, что я ее так раскритиковал работает... и, вроде бы даже кроссплатформенно.
этот код лишний
Код: Выделить всё
...parol : string;
...
for i := low(parol_mas) to high(parol_mas) do parol := '';

i := 0;...                                                 
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 18:34:23

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

любопытно, вы слышали когда нибудь фразу "программу накидал". Понадобилось сделать 500 паролей для юзеров, я их сделал в ехсел. Делать было нечего и я заодно накидал программу в новом для меня lazarus.
Зачем использовать TEdit вместо TSpinEdit?
Зачем хранить длину пароля в строке?

терпеть не могу счетчики со стрелками. Потому что я получаю из edit строку, я не доверяю юзеру, я проверяю ввод.
ах да... зачем проверка на количество паролей? тем более, что она как-то странно реализована.

потому что всё что можно ограничить - должно быть ограничено. Хотя признаю, баг, vrem_razmer_parolya := '';
Используй для счетчиков цикла не Integer, а Byte -- я сомневаюсь, что цикл будет крутиться больше 250 раз.

может крутится 9999 раз. Это ограничено в программе.
обнуление переменной i, в принципе, бесполезная работа -- она и так переустанавливается в начале каждого цикла.

бесполезно, хоть кол об голову чешите. перед тем как я начинаю юзать переменную я убеждаюсь лично, что: 1. я обнулил переменную в начале процедуры; 2. я обнулил переменную перед работающим блоком. Мне нервы дороже, чем 1 оператор для компа, мне еще надо бороться с вселенской несправедливостью.
procedure generirui (); -- скобки лишние

не знал... как то привычнее.
Главной сделай процедуру генерации одного пароля а не множества, а уже ее вызывай много раз

не понимаю, что вы пишите и не умею.

Добавлено спустя 4 минуты 16 секунд:
---
Но там нужно заменить как минимум одну Windows на нужную из Линукс.

чтобы заменить эту процедуру, надо в линукс чтобы исходный код открылся. Фиг с формой, хотя бы код. А кода нет... программа запускается, компилируется, а кода нет.
Точнее не заменить, а там конструкция типа if then else

не понимаю о чем вы пишите
for i := low(parol_mas) to high(parol_mas) do parol := '';

перед тем как я начинаю юзать переменную я убеждаюсь лично, что: 1. я обнулил переменную в начале процедуры; 2. я обнулил переменную перед работающим блоком.


Добавлено спустя 2 минуты 18 секунд:
зы
надо добавить было
//проверяю корректность ввода пароля
if (trim(vrem_razmer_parolya) = '') then begin
vrem_razmer_parolya := '1';
F_main.E_razmer_parolya.Text := '1';
end;
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение SSerge » 18.11.2015 18:42:42

azsx писал(а):под виндой в версии lazarus 1.4.4

azsx писал(а):под убунту и хочу открыть в версии 1.0.4


Ранние версии лазаруса не обязаны уметь открывать проект более поздних. Это то, что товарищ vitaly_l вам пытался донести в дизайнерских ассоциациях с windows и dos. Поставьте под убунту версию 1.4.4 и откройте в ней. Не ставится? Поставьте, наконец, CodeTyphon ( http://www.pilotlogic.com ). Он под убунтами ставится обычно. И там отдельным пунктом инсталлятора устанавливаются необходимые библиотеки.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 18:45:06

Вы уверены, что кто-то что-то может скрыть с Марса?

с луны же цвет грунта скрыли, чо бы с марса не скрыть? хакеры ломают 1. публичный сайт фбр; 2. вываливают фотки прог с которых типа запускают ядерные ракеты. 1. никому не интересно. 2. почему они такие живые после таких взломов?

Добавлено спустя 1 минуту 51 секунду:
Ранние версии лазаруса не обязаны уметь открывать проект более поздних

ясно
Поставьте под убунту версию 1.4.4 и откройте в ней. Не ставится? Поставьте, наконец, CodeTyphon ( http://www.pilotlogic.com ).

ага, версия 1.4.4 не ставиться. Попробую CodeTyphon завтра поставить.
Спасибо обоим заранее, если что...
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение SSerge » 18.11.2015 18:56:09

azsx писал(а):кода нет


Не это ли... Допустим, вы переименовали папку со своим проектом, пусть под windows. Грузите lazarus, оппа! - а вместо предыдущего состояния на экране нет ничего. Тем не менее, проект загружен и компилируется. Фишка в том, что в свойствах проекта обычно прописаны относительные пути к файлам - де "в папке проекта", а в редакторе всегда - абсолютные. Что нужно? - Зайти в то место свойств проекта, где перечислены формы и unit'ы и сделать двойной щелчок на нужном файле. Он и откроется.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение vitaly_l » 18.11.2015 19:01:30

Лекс Айрин писал(а):vitaly_l, ну вот зачем вы так?

Лекс я никого не хотел обижать... я честно написал что: версии Лазаруса 1.0.4 и 1.4.4 - несовместимы... (могут быть)
Постольку поскольку код генерится в Линуксе с Ваших слов, то ВЫВОД: осталась только версия несовместимости версий Лазаруса.
И появилась ещё версия неподключенных библиотек из-за смены путей...
Но я проверить этого не мог, поэтому высказал возможные версии, но ничего плохого я не делал :arrow: :cry: :roll: .

А про Марс... Марс мне просто интересен... И как выяснилось, меня обманывали про Марс, вот смотрите, что выяснилось:
azsx писал(а):почему они такие живые после таких взломов?

Потому что они работают в Пентагоне и подсовывают наивным(типа меня) фото из пустыни вместо фото с Марса?
Или потому что они(хакеры) умные и хорошо конспирируются от гопников(бандитов) из Пентагона?
Как узнать фото настоящие или поддельные из пустыни?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 19:07:40

не знаю в чем именно дело, но тыкая упорно узнал... надо 1. открыть проект (ничего нет); 2. проект, просмотреть исходный код проекта; 3. проект, инспектор проекта - там потыкать всё подряд. После этого код и форма есть. Круто. Только перед первым запуском надо сперва вручную скрмпилировать.
Программа компилируется из проекта в формат pypar2

может кто нибудь знает, это нормально, что проект под убунту компилируется вот так? Еще кстати под винду ехе 1,8 мб, под никс 5,4. Не круто :(

Добавлено спустя 2 минуты 53 секунды:
Как узнать фото настоящие или поддельные из пустыни?

на одном фото с марсохода ящерица, на втором фото тень (мужик наверное) марсоходу антену поправляет. Еще раз, луна бурая (заяц не врет), а фотки с луной серые (амеры ваще негодяи). Но из пустыни фотки настоящие, и марсоход по пустыне официально катается.
Последний раз редактировалось azsx 18.11.2015 19:16:17, всего редактировалось 1 раз.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение Лекс Айрин » 18.11.2015 19:14:17

azsx писал(а):любопытно, вы слышали когда нибудь фразу "программу накидал".


угу... но уж больно, сорри, она усложнена для наколенной программы.

azsx писал(а):не понимаю, что вы пишите и не умею.



Ну вы даете... гораздо проще сгенерировать 1 пароль, чем кучу. А потом можно вызывать генерацию пароля в цикле.
например, ВАШ код

Код: Выделить всё
for t := 1 to chislo_paroley do begin
   for i := 1 to razmer_parolya do begin
          sluhainoe := random (length(stroka)) + 1;
          parol_mas[t] := parol_mas[t] + stroka[sluhainoe];
   end;
end;

if (chislo_paroley = 1) then begin
for t := 1 to chislo_paroley do begin
   F_main.E_parol.Text:= parol_mas[t];
end;

Вполне может быть переделан для генерации 1 пароля.

даже более того... вот, генерация пароля.

Код: Выделить всё

for i := 1 to razmer_parolya do begin
             parol := parol + random (length(stroka)) + 1;
   end;

при этом используемые символы собираются в спецпроцедуре.
Да и вообще, повторение однотипных условий в циклах это знак, что их надо соединить вместе.

azsx писал(а):терпеть не могу счетчики со стрелками. Потому что я получаю из edit строку, я не доверяю юзеру, я проверяю ввод.


в TSpinEdit тоже есть проверка на границу диапазона. И она встроена в сам компонент... а нравится/не нравится, вообще-то странный аргумент. Программа не девушка.

azsx писал(а):Потому что всё что можно ограничить - должно быть ограничено.

Тогда ограничивайте правильно. Проверка должна быть при вводе переменной, а не при ее использовании. (вы просто можете потом о ней забыть) Большая часть ваших проверок из-за использования не совсем правильных компонент, в которые данные не проверяются.
azsx писал(а):может крутится 9999 раз. Это ограничено в программе.

тогда word. Integer вообще не рекомендуют использовать из-за того, что он платформозависимый.

Добавлено спустя 6 минут 52 секунды:
azsx писал(а):ага, версия 1.4.4 не ставиться.


значит, не так ставите. Выбираете метапакет FPC... перед установкой посмотрите дополнительные пакеты, которые ставятся с ним. Там, по крайней мере раньше, был пакет Lazarus. Эта должна быть текущая стабильная версия. А та, которая ставится отдельным пакетом, очень старая и никому не нужная.

Плюс, не устанавливая предварительно лазаря, его можно собрать достав крайнюю версию исходного кода из снапшота.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение SSerge » 18.11.2015 19:22:04

azsx писал(а):под никс 5,4


strip my_execution_name

сделает его меньше.

azsx писал(а): Программа компилируется из проекта в формат pypar2


Это оно где высвечивает? В окне сообщений (message), где отображается процесс компиляции?

у меня например пишет так:

Compile Project, Target: project1: Success

потому что проект называется project1.

Добавлено спустя 8 минут 23 секунды:
Кстати, скачал ваше ogo, открыл его проект. Открылась как форма, так и ее исходный код.
Откомпилировался со следующими сообщениями:

Compile Project, Target: project1: Success, Warnings: 1, Hints: 1
unit1.pas(108,27) Warning: Local variable "parol_mas" of a managed type does not seem to be initialized
unit1.pas(71,11) Note: Local variable "parol" is assigned but never used

никаких pypar2 :shock:
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Кроссплатформеность проекта - как ее добиться?

Сообщение azsx » 18.11.2015 19:37:43

но уж больно, сорри, она усложнена для наколенной программы.

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

всю жизнь юзаю int для for. Уже привычка.Для 8 битных устройств я программ не пишу, 16 бит в инт мне уже хватает более чем.
Проверка должна быть при вводе переменной, а не при ее использовании.

сожалею, что веду себя как баран, но не согласен. 1. я хочу видеть edit поле для ввода числа. 2. я не хочу напрянать юзера showmessage ой вы вводите в моей супер программе не верно всё, исправляйтесь. Пусть юзер введт там чо захочет, программа поправит сама.
Вполне может быть переделан для генерации 1 пароля.

Код: Выделить всё
// в цикле заполнил массив паролями. пофиг 1 там пароль или 100, 1 символ в пароле или 500. Заполнил.
for t := 1 to chislo_paroley do begin
   for i := 1 to razmer_parolya do begin
          sluhainoe := random (length(stroka)) + 1;
          parol_mas[t] := parol_mas[t] + stroka[sluhainoe];
   end;
end;
// конец заполнения

// если пароль 1 то заполнил едит на форме. Как будто бы цикл лишний.
if (chislo_paroley = 1) then begin
for t := 1 to chislo_paroley do begin
   F_main.E_parol.Text:= parol_mas[t];  // обратите внимание F_main.E_parol.Text
end;
  f_main.M_paroli.Clear;   // логично сюда добавить
end;
// заполнил 1 пароль

//а вот зачем я оставил цикл в предыдущем блоке. Для меня удобнее, что блоки почти похожи, отличаются только командой внутри цикла.
//цикл предыдущий лишний, обращаюсь не к 1, а к переменной t. Зато код очень похож, что мне удобнее, меньше надо думать. Я думать терпеть не могу, у меня от этого голова болит.
if (chislo_paroley > 1) then begin
f_main.M_paroli.Clear;
for t := 1 to chislo_paroley do begin
   f_main.M_paroli.Lines.Add(parol_mas[t]); // обратите внимание, разные формы f_main.M_paroli.Lines
end;
F_main.E_parol.Text:= '';
end; 

Где надо сделать оптимизацию?

Добавлено спустя 3 минуты 39 секунд:
Программа не девушка.

спорно.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 238

Рейтинг@Mail.ru
cron