Решено: Кроссплатформеность проекта - как ее добиться?
Модератор: Модераторы
Решено: Кроссплатформеность проекта - как ее добиться?
Вот простая программа которую я написал под виндой в версии lazarus 1.4.4. https://cloud.mail.ru/public/5Fs9/MuRFfPyxY
Я скопировал проект под убунту и хочу открыть в версии 1.0.4. Ни внешняя форма, ни исходный код не открывается. Программа компилируется из проекта в формат pypar2 и запускается из lazarus под убунтой. Только кода нет.
Вопрос, чо я делал не так? Как добиться чтобы код появился? Нормально ли что в формат pypar2 компилируется? зы ну и вдруг кто знает, есть ли жизнь на марсе?
----------------------
Решено:
pypar2 - это моя вина, сам питон поставил.
1. открыть проект (ничего нет); 2. проект, просмотреть исходный код проекта; 3. проект, инспектор проекта - там потыкать всё подряд. После этого код и форма есть. Круто. Только перед первым запуском надо сперва вручную скрмпилировать.
Я скопировал проект под убунту и хочу открыть в версии 1.0.4. Ни внешняя форма, ни исходный код не открывается. Программа компилируется из проекта в формат pypar2 и запускается из lazarus под убунтой. Только кода нет.
Вопрос, чо я делал не так? Как добиться чтобы код появился? Нормально ли что в формат pypar2 компилируется? зы ну и вдруг кто знает, есть ли жизнь на марсе?
----------------------
Решено:
pypar2 - это моя вина, сам питон поставил.
1. открыть проект (ничего нет); 2. проект, просмотреть исходный код проекта; 3. проект, инспектор проекта - там потыкать всё подряд. После этого код и форма есть. Круто. Только перед первым запуском надо сперва вручную скрмпилировать.
Последний раз редактировалось azsx 18.11.2015 19:16:06, всего редактировалось 2 раза.
azsx писал(а):есть ли жизнь на марсе?
не... на Марсе жизни нет, т.к. там уже давно ползает фигня системы марсоход и она ничего живого не обнаружила.
С другой стороны ещё есть теория надежды на то что там когда-то была жизнь, т.к. существует предположение, что там была годная для этого атмосфера. Но пока даже остатков прежней жизни не нашли.
Касаемо предыдущих вопросов: А вы пробовали программы из под windows запускать в досе? И что? Программы не работали? <=== Вот!!! ===> В этом возможно и кроется причина отсутствия жизни на марсе, просто жизнь на Марсе была в другой системе координат... И марсиане не знали что число Пи равно 3.14 и ещё какие-то там цифры, после 14. Так вот, предположим, версия Лазаруса 1.0.4 - это дос... а версия Лазаруса 1.4.4 - это windows. Соответственно Windows это Земля а Дос это Марс...
Вывод: И вышесказанного следует что, жизнь на Марсе возможна, но она не такая как на Земле... т.к. программы из под Windows не хотят работать в Дос. А тем более в Линуксе, нужно подключать специфические библиотеки Линукса и отключать ненужные библиотеки Windows...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Если честно, то программа кажется странноватой...
Хотя в винде и работает...
Вопросы:
Зачем использовать TEdit вместо TSpinEdit?
Зачем хранить длину пароля в строке?
ах да... зачем проверка на количество паролей? тем более, что она как-то странно реализована.
Советы
Используй для счетчиков цикла не Integer, а Byte -- я сомневаюсь, что цикл будет крутиться больше 250 раз.
Главной сделай процедуру генерации одного пароля а не множества, а уже ее вызывай много раз -- Это проще...
обнуление переменной i, в принципе, бесполезная работа -- она и так переустанавливается в начале каждого цикла.
procedure generirui (); -- скобки лишние.
Хотя в винде и работает...
Вопросы:
Зачем использовать TEdit вместо TSpinEdit?
Зачем хранить длину пароля в строке?
ах да... зачем проверка на количество паролей? тем более, что она как-то странно реализована.
Советы
Используй для счетчиков цикла не Integer, а Byte -- я сомневаюсь, что цикл будет крутиться больше 250 раз.
Главной сделай процедуру генерации одного пароля а не множества, а уже ее вызывай много раз -- Это проще...
обнуление переменной i, в принципе, бесполезная работа -- она и так переустанавливается в начале каждого цикла.
procedure generirui (); -- скобки лишние.
А тем более в Линуксе, нужно подключать специфические библиотеки Линукса и отключать ненужные библиотеки Windows...
вот теперь бы узнать какие библиотеки, куда подключать и почему lazarus обзывают кроссплатформенным кодом, назвали бы (лазарус запускаемый в винде имеет несовместимый аналог под линукс) и ноль проблем. А ведь я читаю, что лазарус имеет именно кроссплатформеный код. И прогамма у меня простая, какие там нафиг библиотеки? И компилируется проект под никс, только поправить не получается.
на Марсе жизни нет, т.к. там уже давно ползает фигня системы марсоход и она ничего живого не обнаружила.
очень много свидетельств, что для паблика сливают фотки невадской пустыни, где ползает аналог марсохода.
azsx писал(а):для паблика сливают фотки невадской пустыни, где ползает аналог марсохода
Вы хотите сказать что гопники зажали фото от хакеров? И я по Вашему должен в "это" поверить? после того как хакеры взломали притон гопников из пентагона? Вы уверены, что кто-то что-то может скрыть с Марса?
Касаемо, необходимых библиотек... народ подскажет, т.к. Линукс - это не моя песня. Но там нужно заменить как минимум одну Windows на нужную из Линукс. Точнее не заменить, а там конструкция типа if then else
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vitaly_l, ну вот зачем вы так? Программа, несмотря на то, что я ее так раскритиковал работает... и, вроде бы даже кроссплатформенно.
этот код лишний
этот код лишний
Код: Выделить всё
...parol : string;
...
for i := low(parol_mas) to high(parol_mas) do parol := '';
i := 0;... как бы тема об проблемах в линукс...
оффтопик
любопытно, вы слышали когда нибудь фразу "программу накидал". Понадобилось сделать 500 паролей для юзеров, я их сделал в ехсел. Делать было нечего и я заодно накидал программу в новом для меня lazarus.
терпеть не могу счетчики со стрелками. Потому что я получаю из edit строку, я не доверяю юзеру, я проверяю ввод.
потому что всё что можно ограничить - должно быть ограничено. Хотя признаю, баг, vrem_razmer_parolya := '';
может крутится 9999 раз. Это ограничено в программе.
бесполезно, хоть кол об голову чешите. перед тем как я начинаю юзать переменную я убеждаюсь лично, что: 1. я обнулил переменную в начале процедуры; 2. я обнулил переменную перед работающим блоком. Мне нервы дороже, чем 1 оператор для компа, мне еще надо бороться с вселенской несправедливостью.
не знал... как то привычнее.
не понимаю, что вы пишите и не умею.
Добавлено спустя 4 минуты 16 секунд:
---
чтобы заменить эту процедуру, надо в линукс чтобы исходный код открылся. Фиг с формой, хотя бы код. А кода нет... программа запускается, компилируется, а кода нет.
не понимаю о чем вы пишите
Добавлено спустя 2 минуты 18 секунд:
зы
надо добавить было
//проверяю корректность ввода пароля
if (trim(vrem_razmer_parolya) = '') then begin
vrem_razmer_parolya := '1';
F_main.E_razmer_parolya.Text := '1';
end;
оффтопик
Если честно, то программа кажется странноватой...
любопытно, вы слышали когда нибудь фразу "программу накидал". Понадобилось сделать 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 писал(а):под виндой в версии lazarus 1.4.4
azsx писал(а):под убунту и хочу открыть в версии 1.0.4
Ранние версии лазаруса не обязаны уметь открывать проект более поздних. Это то, что товарищ vitaly_l вам пытался донести в дизайнерских ассоциациях с windows и dos. Поставьте под убунту версию 1.4.4 и откройте в ней. Не ставится? Поставьте, наконец, CodeTyphon ( http://www.pilotlogic.com ). Он под убунтами ставится обычно. И там отдельным пунктом инсталлятора устанавливаются необходимые библиотеки.
Вы уверены, что кто-то что-то может скрыть с Марса?
с луны же цвет грунта скрыли, чо бы с марса не скрыть? хакеры ломают 1. публичный сайт фбр; 2. вываливают фотки прог с которых типа запускают ядерные ракеты. 1. никому не интересно. 2. почему они такие живые после таких взломов?
Добавлено спустя 1 минуту 51 секунду:
Ранние версии лазаруса не обязаны уметь открывать проект более поздних
ясно
Поставьте под убунту версию 1.4.4 и откройте в ней. Не ставится? Поставьте, наконец, CodeTyphon ( http://www.pilotlogic.com ).
ага, версия 1.4.4 не ставиться. Попробую CodeTyphon завтра поставить.
Спасибо обоим заранее, если что...
azsx писал(а):кода нет
Не это ли... Допустим, вы переименовали папку со своим проектом, пусть под windows. Грузите lazarus, оппа! - а вместо предыдущего состояния на экране нет ничего. Тем не менее, проект загружен и компилируется. Фишка в том, что в свойствах проекта обычно прописаны относительные пути к файлам - де "в папке проекта", а в редакторе всегда - абсолютные. Что нужно? - Зайти в то место свойств проекта, где перечислены формы и unit'ы и сделать двойной щелчок на нужном файле. Он и откроется.
Лекс Айрин писал(а):vitaly_l, ну вот зачем вы так?
Лекс я никого не хотел обижать... я честно написал что: версии Лазаруса 1.0.4 и 1.4.4 - несовместимы... (могут быть)
Постольку поскольку код генерится в Линуксе с Ваших слов, то ВЫВОД: осталась только версия несовместимости версий Лазаруса.
И появилась ещё версия неподключенных библиотек из-за смены путей...
Но я проверить этого не мог, поэтому высказал возможные версии, но ничего плохого я не делал
А про Марс... Марс мне просто интересен... И как выяснилось, меня обманывали про Марс, вот смотрите, что выяснилось:
azsx писал(а):почему они такие живые после таких взломов?
Потому что они работают в Пентагоне и подсовывают наивным(типа меня) фото из пустыни вместо фото с Марса?
Или потому что они(хакеры) умные и хорошо конспирируются от гопников(бандитов) из Пентагона?
Как узнать фото настоящие или поддельные из пустыни?
.
не знаю в чем именно дело, но тыкая упорно узнал... надо 1. открыть проект (ничего нет); 2. проект, просмотреть исходный код проекта; 3. проект, инспектор проекта - там потыкать всё подряд. После этого код и форма есть. Круто. Только перед первым запуском надо сперва вручную скрмпилировать.
может кто нибудь знает, это нормально, что проект под убунту компилируется вот так? Еще кстати под винду ехе 1,8 мб, под никс 5,4. Не круто
Добавлено спустя 2 минуты 53 секунды:
на одном фото с марсохода ящерица, на втором фото тень (мужик наверное) марсоходу антену поправляет. Еще раз, луна бурая (заяц не врет), а фотки с луной серые (амеры ваще негодяи). Но из пустыни фотки настоящие, и марсоход по пустыне официально катается.
Программа компилируется из проекта в формат pypar2
может кто нибудь знает, это нормально, что проект под убунту компилируется вот так? Еще кстати под винду ехе 1,8 мб, под никс 5,4. Не круто
Добавлено спустя 2 минуты 53 секунды:
Как узнать фото настоящие или поддельные из пустыни?
на одном фото с марсохода ящерица, на втором фото тень (мужик наверное) марсоходу антену поправляет. Еще раз, луна бурая (заяц не врет), а фотки с луной серые (амеры ваще негодяи). Но из пустыни фотки настоящие, и марсоход по пустыне официально катается.
Последний раз редактировалось azsx 18.11.2015 18:16:17, всего редактировалось 1 раз.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
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. Эта должна быть текущая стабильная версия. А та, которая ставится отдельным пакетом, очень старая и никому не нужная.
Плюс, не устанавливая предварительно лазаря, его можно собрать достав крайнюю версию исходного кода из снапшота.
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
но уж больно, сорри, она усложнена для наколенной программы.
даже не думал об этом. но я на русском болтаю, а мне часто говорят, что нифига не понятно что я сейчас сказал. а тут не просто нерусский, а еще и язык программирования. Там ваще только я шарю в своих командах
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 секунд:
Программа не девушка.
спорно.
