Jan 03

Delphi PAServer | Debugger fatal error: device not responding. The debug process will be terminated

This may happen if you try to Debug your program (F9) via PAServer on *nux based systems. In this case the IDE may hang. You may also receive: “Unable to create process: Connection device timeout”

Resolution: ensure files in PAServer’s directory have EXECUTE flag (especially linuxgdb). It’s that simple 🙂

Found with the help of: https://github.com/a2o/snoopy

Jan 03

Introducing JsonToDelphiClass

JSON format spread over the years and became preferred lightweight protocol for data exchange. Delphi natively supports JSON via the classes in the System.JSON unit. But dealing with TJsonObject requires an intermediate layer for mapping JSON values to our business logic.
Recent Delphi releases make it easier to load JSON data to a specific BL class with the help of TJson.JsonToObject. But in all cases the developer should manually create these BL classes which can be time consuming operation. The missing part is the JSON Data binding wizard.

Continue reading

Dec 16

Безумната комбинация CreateToolhelp32Snapshot + TH32CS_SNAPTHREAD

CreateToolhelp32Snapshot е основна функция що се отнася до изброяване на процеси, модули, нишки и heap-ове. В MSDN тя е дефинирана така:

Най-просто казано първият параметър указва каква информация ще се изисква, а вторият – процесът, за който се отнася въпросната информация.

Нека за момент си представим, че искате да получите списък с нишките, които принадлежат на даден процес. Необходимият флаг е TH32CS_SNAPTHREAD. По инерция въвеждате и идентификатора на процеса, който Ви интересува. Изпълнявате и ХОП – ИЗНЕНАДА!  Сдобивате се със списък на всички активни в операционната система нишки (до които имате достъп), а не за конкретната програма?!?

Continue reading

Sep 26

Вирус поразява инсталации на Delphi?!?

   Едва ли има потребител, който не знае що е то компютърен вирус (като потърпевш или обеззаразител 🙂 ). Но поведението на вируса, за който ще стане дума е доста нестандартно. Открит е съвсем случайно, поради БЪГ в него 🙂

Историята.

Преди време, в руски Delphi форум е зададен въпрос, относно неочаквана грешка по време на изпълнение на някаква програма: Runtime Error 3. В последствие става ясно, че в компилираната програма има скрит изпълним код:

Изследването му води до следния извод: вирусът НЕ ЗАРАЗЯВА изпълними файлове, а самия Delphi компилатор! И прави само това – разпространява се т.е. не извършва деструктивни операции и може да се смята, че е “безвреден”. Ето и част от неговия код:

В Интернет вирусът е познат под името W32/Induc-A.

Вирус, поразяващ програмисти 😀

Continue reading

Sep 13

Delphi: изброени типове (enumerations)

   Delphi, като много други програмни езици, предлага на потребителя да дефинира т.нар. изброени типове (enumerations). Те представляват поредица от именувани елементи/константи, чиято стойност се определя от поредното място на елемента в списъка. Изброените типове спадат към т.нар. подредени данни. Те дефинират подредено множество от стойности, където всяка стойност, без първата има уникален предшественик и всяка стойност, без последната, има уникален следващ елемент.

В Delphi има вградени такива типове: integer,char,boolean

Ето и един пример:

 

Continue reading

Sep 05

Полезно ли е преписването от Интернет? :)

   Преди 2-3 години ми се наложи да напиша програма, която стартира друго приложение в кода си. Логично, попитах google 🙂 . Намерих това, което ми трябва. Даже си го отделих в unit, който съдържа често използвани процедури и фунцкии. До тук добре.
Малко след това трябваше да се направи нишково приложение (Multi Threaded Аpplication), което да стартира по 30 външни приложения едновременно и постоянно – като цяло интензивнен процес. Направих необходимото и пуснах програмата в действие. За лоша моя изненада тулчето ми зависваше след няколко дни работа и състоянието  на компютъра, на който се изпълняваше беше трагично: “Low Of System Resources”… Очевадно беше, че някъде съм забравил да освободя памет т.е. т.нар. Memory Leak (изтичане на памет). Прекарах доста време пред не чак толкова сложната си програма, но не постигнах никакъв положителен ефект – на пръв поглед всичко беше ОК. Последваха интензивни тестове, които показаха, че приложението ми яде памет…но къде?!?
Continue reading

Sep 04

Спомняте ли си Turbo Pascal и Turbo C/C++?

   Преди години това бяха два продукта, които промениха начина, по който се програмира. Голямата новост беше, че те предлагат интегрирана среда за програмиране (IDE), макар и в текстов режим. Години след това имената им се промениха, бяха мигрирани към графичен интерфейс, IDE частта им ставаше все по-добра и лесна за употреба. Цената им обаче – твърде висока за повечето потребители.

Добрата новина е, че някои от големите компании, които се занимават с разработката на IDE и компилатори предоставят и по-орязани версии на своите продукти на цена $0 т.е. безплатно. Въпреки намалената си функционалност те са изключително подходящи за изучаване на различните програмни езици в училищата (часовете по информатика/ИТ).

Continue reading