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

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