несколько вопросов со стороны разработчика

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

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

Re: несколько вопросов со стороны разработчика

Сообщение debi12345 » 16.06.2012 22:59:39

Прямая работа со строками оборачивается серьезными проблемами про вызове сторонних функций из библиотек Linux. Лучше вообще этой возможностью Паскаля не пользоваться.

Тогда опять опускаемся на низкий уровень - с ручной возней с памятью по строки - определение размера, заказ и освобождение, остлеживание невыхода за границы а значит и ограниченная длина строк- а значит рано-или поздно наскок на подводный камень[либо уязвимсоть, либо обрез функционала]. Про кошмар с юникодом и нелатинскими кодировками вообще молчу. Скажу за себя - стараюсь ликуксовые кнсольные утиллиты писать на FPC - именно из-за строк, а конвертнуть в PChar для передачи в DLL - есть же специальные функции.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: несколько вопросов со стороны разработчика

Сообщение carrots » 17.06.2012 15:11:39

betatester писал(а):
debi12345 писал(а):Фактически это означает "пишите на С". Потому что прямая работа со строками - важнейший плюс Паскаля :)
Прямая работа со строками оборачивается серьезными проблемами про вызове сторонних функций из библиотек Linux. Лучше вообще этой возможностью Паскаля не пользоваться.

Улыбнуло :lol:
И что это за проблема там такая, если не секрет?
Уже 3 года почти все серверные и системные, консольные приложения пишу на freepascal, поскольку это легче, удобнее и быстрее чем на C++ (GUI в данный момент пишу на C#, mono под винду), никаких критических проблем при использовании строк с внешними библиотеками linux не встречал(хотя прибегать к ним приходится довольно часто). Конечно нужно следить чтоб формат строки совпадал с требованиями библиотеки(к примеру следить чтоб был завершающий 0), но отказываться от фрипаскалевских строк это странно.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 17.06.2012 19:01:47

1. Я сам управляю строками, их выделением или освобождением.
2. Я пользуюсь библиотечными функциями libc и glib для работы со строками.
3. Я преобразовываю величины в строки функциями g_strdup_printf (). Это гораздо удобнее, чем куча разнородных функций преобразования величин в строки в Паскале.
4. Моя программа при порядка 130 тыс. строк кода имеет размер 470 килобайт. А при использовании стандартных библиотек FPC было бы примерно 3.7 МегаБайт. А если бы я пользовался классами Lazarus и LCL - было бы вообще 6-7 МегаБайт.

ЗЫ: Я вообще не пользуюсь библиотеками LCL и FPC. Я пропатчил исходники FPC и выкинул из них все лишнее. Я не пользуюсь стандартными юнитами, цепляющими библиотеки Linux - я все нужные мне юниты написал самостоятельно. Фактически, FPC для меня - голый компилятор.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение Ism » 17.06.2012 20:54:38

Сейчас не то время, когда экономят на размере. Зато 3 метровый файл программы с добавлением функционала почти не растет
Паскаль создан для удобства , а не экономии
Кроме того в паскале есть способы уменьшения исполняемого файла
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 17.06.2012 22:20:08

А зачем мне 3-4 мегабайта ЛИШНЕГО кода, содержимое которого я не контролирую и который может содержать потенциальные ошибки и быть источником сбоев и поломок?

Я достаточно быстро и эффективно программирую на GTK+ и с использованием библиотек Linux - мне не нужны костыли типа FCL/LCL.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение Ism » 17.06.2012 22:23:47

Ну тогда вам паскаль не нужен, лучше С для этого нет.
Вообще есть QtCreator , он умеет экономить
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: несколько вопросов со стороны разработчика

Сообщение carrots » 17.06.2012 22:37:49

Что-то не сходится....
В проекте над которым я сейчас работаю 117902 строки личного кода + используются фрипаскалевские библиотеки и библиотеки lazarus, запускаемый файл занимает 1.5мб под 64 разряда и 1мб для 32. Хотя размер это то что меня меньше всего интересует, просто не люблю изобретать велосипеды, и напрасно время тратить.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 17.06.2012 23:15:42

carrots - дык, я никого не агитирую. Мне удобнее так. Я не завишу от библиотек FCL и LCL, от версий Lazarus, от багов интерфейса.
Переносимости мне не нужно - я пишу строго под GTK2/Linux. Результатом я доволен, пользователи не жалуются.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение Ism » 17.06.2012 23:37:11

betatester писал(а):Я пропатчил исходники FPC и выкинул из них все лишнее. Я не пользуюсь стандартными юнитами, цепляющими библиотеки Linux - я все нужные мне юниты написал самостоятельно. Фактически, FPC для меня - голый компилятор.

Ну такой проект можете сопровождать только вы, что очень плохо для ваших клиентов
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 18.06.2012 00:05:40

Ism: Моя программа поставляется под лицензией As-Is. :wink:

Но, я не согласен с вашей трактовкой. Мои исходники хорошо структурированы и отлично откомментированы. Переменные и процедуры называются стандартно и по конвенции. Это главное.

А инструмент разработки - вторичен. Я видал такие исходники на Дельфи, что лучше было просто начисто переделать, чем разобраться. :lol: К тому же - мои исходники соберутся и на непропатченном FPC. Просто бинарник будет больше, и все.

Я непосредственно никакие функции FPC не вызываю. Даже памятью управляю через g_free/g_malloc0.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение Ism » 18.06.2012 00:10:30

Не совсем понятно, зачем вам вообще fpc ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 18.06.2012 00:25:28

Ism писал(а):Не совсем понятно, зачем вам вообще fpc ?
Нравится объектная модель Object Pascal. :D Простая и эффективная.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 24.07.2012 18:40:48

Уважаемые Коллеги!

В публичный доступ выложена новая версия SysInfo for Linux - 0.7.4. Список изменений:
  • исправлено поведение колонок StringGrid на странице Memory при масштабировании. Теперь их размер изменяется пропорционально;
  • с помощью господина Haron Prime с форума Ubuntu Linux из строки Sys. Buses на странице System убраны наименования виртуальных шин;
  • благодаря усилиям господина Thunde® с форума Ubuntu Linux исправлена ошибка отображения параметра Default Encryption на закладке Printers;
  • в рамках работ по переходу на архитектуру x86_64 выполнен отказ от использования функции syscall() в пользу соотв. специализированных функций библиотеки LIBC;
  • благодаря ошибке, найденной господином Olej с форума Ubuntu Linux обновлен механизм определения размера и процента использования файловой системы;
  • благодаря помощи господина Легас с форума Ubuntu Linux произведено обновление информации для ряда устройств ACPI - Intel, Toshiba, Fujitsu;
  • актуализирована картинка на заставке;
  • и ряд других исправлений и доработок в коде и дизайне.
Загрузить программу можно с домашней страницы проекта.

Пожалуйста, протестируйте. Если найдете ошибки - я быстро исправлю. А так - сейчас я буду концентрироваться на выпуске версии x86_64.

С уважением.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: несколько вопросов со стороны разработчика

Сообщение kosteek » 26.07.2012 01:03:10

Что это за ошибка?
Код: Выделить всё
Starting  SysInfo for Linux ver. 0.7.4, GTK2 based
TCPUInfoRec.Create
Cache.Info Type: L1 Data, Size: 64, 2-way set associative, 1 line per tag, 64 bit line size
Cache.Info Type: L1 Inst, Size: 64, 2-way set associative, 1 line per tag, 64 bit line size
Cache.Info Type: L2, Size: 1024, 16-way set associative, 1 line per tag, 64 bit line size
TCPUInfoRec.Done
TMemoryInfoRec.Create
TMemoryInfoRec.Done
TDMIBIOSInfoRec.Create
SIUtils.Info Unable to open /dev/mem for reading. No enough rights?
TDMIBIOSInfoRec.Done
TSysBusInfoRec.Create
TSysBusInfoRec.Done
TSysBIOSInfoRec.Create
TSysBIOSInfoRec.Done
TBlockDevInfoRec.Create
Added block dev: SATA HDD: 465,8Gb ST500DM002-1BD14 [sda1-sda3]
TBlockDevInfoRec.Done
TFSInfoRec.Create
TFSInfoRec.Done
TX11VideoInfoRec.Create
  Processed:  MIT-SCREEN-SAVER,              OpCode 128  Requested:  Ver. 1.1
  Processed:  XFree86-VidModeExtension,      OpCode 129  Requested:  Ver. 2.2
  Processed:  XFree86-DGA,                   OpCode 130  Requested:  Ver. 2.0
  Processed:  DPMS,                          OpCode 131  Requested:  Ver. 1.1
  Processed:  XVideo,                        OpCode 132  Requested:  Ver. 2.2
  Processed:  X-Resource,                    OpCode 133  Requested:  Ver. 1.0
  Processed:  DOUBLE-BUFFER,                 OpCode 134  Requested:  Ver. 1.0
  Processed:  GLX,                           OpCode 135  Requested:  Ver. 1.4
  Processed:  RECORD,                        OpCode 136  Requested:  Ver. 1.13
  Processed:  DRI2,                          OpCode 137  Requested:  Ver. 1.3
  Processed:  NV-GLX,                        OpCode 138 
  Processed:  NV-CONTROL,                    OpCode 139  Requested:  Ver. 1.27
  Processed:  Generic Event Extension,       OpCode 140  Requested:  Ver. 1.0
  Processed:  SHAPE,                         OpCode 141  Requested:  Ver. 1.1
  Processed:  MIT-SHM,                       OpCode 142  Requested:  Ver. 1.1
  Processed:  XInputExtension,               OpCode 143  Requested:  Ver. 2.2
  Processed:  XTEST,                         OpCode 144  Requested:  Ver. 2.2
  Processed:  BIG-REQUESTS,                  OpCode 145 
  Processed:  SYNC,                          OpCode 146  Requested:  Ver. 3.1
  Processed:  XKEYBOARD,                     OpCode 147  Requested:  Ver. 1.0
  Processed:  XC-MISC,                       OpCode 148  Requested:  Ver. 1.1
  Processed:  SECURITY,                      OpCode 149  Requested:  Ver. 1.0
  Processed:  XINERAMA,                      OpCode 150  Requested:  Ver. 1.1
  Processed:  XFIXES,                        OpCode 151  Requested:  Ver. 65470464.65470464
  Processed:  RENDER,                        OpCode 152  Requested:  Ver. 0.11
  Processed:  RANDR,                         OpCode 153  Requested:  Ver. 65470464.65470464
  Processed:  XINERAMA,                      OpCode 150  Requested:  Ver. 1.1
  Processed:  Composite,                     OpCode 155  Requested:  Ver. 0.4
  Processed:  DAMAGE,                        OpCode 156  Requested:  Ver. 1.1
TX11FontInfoRec.Create
TX11FontInfoRec.Done
TX11MonitorInfoRec.Create
  TRandRMonitorRec.Create
  TRandRMonitorRec.Done
TX11MonitorInfoRec.Done
TX11ScrInfoRec.Create
TX11ScrInfoRec.Done
TOpenGLInfoRec.Create
  (1) Choosing OpenGL visual context...
  (2) Creating OpenGL visual context...
  (3) Making created context current...
  (4) Quering OpenGL....
  (5) Quering DRI/DRM...
  TOpenGLInfoRec Unable to open /dev/dri/card0!
  (6) Quering NV-CONTROL...
  NVidia BIOS ver.: 70.16.50.00.00
  NVidia IRQ: 12
  NVidia RAM: 1024Mb
  (7) Quering GLX Server/Client...
  (8) Destroing OpenGL visual context...
TOpenGLInfoRec.Done
TX11XvInfoRec.Create
TX11XvInfoRec.Done
TX11VideoInfoRec.Done
TMMediaInfoRec.Create
TMMediaInfoRec.Done
TPrinterInfoRec.Create
cupsDoRequest() error: client-error-not-found
TPrinterInfoRec.Done
TVersionInfoRec.Create
  Name: WM_NAME, Value: (null)
  Name: _NET_WM_NAME, Value: Compiz
TVersionInfoRec.Done
TNetworkInfoRec.Create
TNetworkInfoRec.Done
TDevTreeInfoRec.Create
TDevTreeInfoRec.Done
1st Page: Done.
2nd Page: Done.
3rd Page: Done.
4th Page: Done.
5th Page: Done.
6th Page: Done.
7th Page: Done.
8th Page: Done.
Runtime error 207 at $B42F6FBC
  $B42F6FBC
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: несколько вопросов со стороны разработчика

Сообщение betatester » 26.07.2012 11:10:06

kosteek писал(а):Что это за ошибка?
Код: Выделить всё
Starting  SysInfo for Linux ver. 0.7.4, GTK2 based
.....
1st Page: Done.
2nd Page: Done.
3rd Page: Done.
4th Page: Done.
5th Page: Done.
6th Page: Done.
7th Page: Done.
8th Page: Done.
Runtime error 207 at $B42F6FBC
  $B42F6FBC

Kosteek, спасибо.

Запустите, пожалуйста, программу через gdb. Когда упадет - напишите
Код: Выделить всё
bt full

Аутпут - сюда.
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Пред.След.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru