raised exception class EInvalidPointer whit messag
4 отговора
149 прегледа
raised exception class EInvalidPointer whit messag
Wikam edin dll i mi dawa tova saobshtenie pri izhod ot osnovnata Application
raised exception class EInvalidPointer whit message "Invalid pointer operator"
V application:
function J:Boolean; stdcall external 'Fiscal.dll';
V .dll:
library Fiscal;
uses
ShareMem, SysUtils,
Classes, FP3530_TLB, Windows,
Messages, Variants, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
{$R *.res}
function J():Boolean; stdcall;
var
d: Boolean;
begin
d := True;
Result := d;
end;
exports J;
Ne]o ne sam zadal path do dll li?
raised exception class EInvalidPointer whit message "Invalid pointer operator"
V application:
function J:Boolean; stdcall external 'Fiscal.dll';
V .dll:
library Fiscal;
uses
ShareMem, SysUtils,
Classes, FP3530_TLB, Windows,
Messages, Variants, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
{$R *.res}
function J():Boolean; stdcall;
var
d: Boolean;
begin
d := True;
Result := d;
end;
exports J;
Ne]o ne sam zadal path do dll li?
Re: raised exception class EInvalidPointer whit me
извиквам една библиотека, но ми дава грешка при изход от програмата.
Никой ли не може поне да предположи.
InvalidPointer е грешката.
Неправилно го викам ли?uses клазата сам обаркал sharmem...
Или като го декларирам в унита си , а не в библиотката го декларирам на неправилното място. всичко сам направил по книга
Никой ли не може поне да предположи.
InvalidPointer е грешката.
Неправилно го викам ли?uses клазата сам обаркал sharmem...
Или като го декларирам в унита си , а не в библиотката го декларирам на неправилното място. всичко сам направил по книга
mai problema ne e ot dll a ot direktiva na kompila
qwno problema e w towa `e sam slojil direktiwa na kompilatora? niakakvi prepoloveniia?
direktivata eot tezi
zadavam direktiva promenliva
i posle
ifdif
koda se izpalniava ako promenlivata-direktiva e deklarirana
enddif
direktivata eot tezi
zadavam direktiva promenliva
i posle
ifdif
koda se izpalniava ako promenlivata-direktiva e deklarirana
enddif
Млади момко,
Липсата на сериозни отговори на хилядите постове, с които напълни форума, се дължат на няколко простички неща:
1) Пиши на кирилица. Хората, които четем и пишем тук сме българи. Майчиният ни език е български и най-добре четем на него. Същото (предполагам) важи и за теб. За справка можеш да се обърнеш към правилата на форума.
2) На теб явно ти липсват основни познания за компютрите като цяло. Не можеш да се оплакваш, че примерите, които ти дават колегите са безсмислени, само защото ТИ нямаш инсталиран някой компонент, който те ползват. Уверявам те, в повечето случаи "липсващите функции" са напълно абстрактни и могат съвсем прозрачно да бъдат заместени с произволни подобни.
3) За да се "изпробва" твоя код се изискват значително време и усилия. Ти не си постнал нищо работещо, нито дори нещо, което да се приближава дори и минимално към представата ми за работещ код. Ако аз трябва да си губя времето да ти преправям и дооправям твоите примери - не очаквай да го направя.
4) Ако ще се занимаваш сериозно с тези неща - договори се с фирмата, която ще достави фискалните принтери за твоя бъдещ продукт. В техен интерес е да ти помогнат и почти всяка фирма ще ти предостави тестов принтер или ще ти даде възможност да изпробваш своя код на такъв.
5) Знаеш ли какво значи RTFM? На въпроси като горния ти това ще бъде най-логичният отговор. Прочети какво пише в хелпа на делфито какво пише за ShareMem. Обърни внимание на следното: ShareMem should always be the first unit listed in any program or library uses clause where it occurs. Трябва да го цитираш в uses клаузата на проектния ти файл (dpr файла), а не на твоя модул, а камо ли пък в implementation часта му!
В заключение ще ти препоръчам да си намериш малко литература за компютърна архитектура (някакви учебници за началните курсове ще свършат работа), програмиране с делфи (има много линкове в този форум, а и на пазара се продават много книги) и да понатрупаш малко практически опит в програмирането, преди да се захващаш с подобни амбициозни проекти.
Успех с четенето и ако имаш някакви конкретни въпроси - прояви малко повече уважение към хората, от които очакваш помощ. Уверявам те, ще получиш компетентно съдействие при решаването на проблемите ти!
1) Пиши на кирилица. Хората, които четем и пишем тук сме българи. Майчиният ни език е български и най-добре четем на него. Същото (предполагам) важи и за теб. За справка можеш да се обърнеш към правилата на форума.
2) На теб явно ти липсват основни познания за компютрите като цяло. Не можеш да се оплакваш, че примерите, които ти дават колегите са безсмислени, само защото ТИ нямаш инсталиран някой компонент, който те ползват. Уверявам те, в повечето случаи "липсващите функции" са напълно абстрактни и могат съвсем прозрачно да бъдат заместени с произволни подобни.
3) За да се "изпробва" твоя код се изискват значително време и усилия. Ти не си постнал нищо работещо, нито дори нещо, което да се приближава дори и минимално към представата ми за работещ код. Ако аз трябва да си губя времето да ти преправям и дооправям твоите примери - не очаквай да го направя.
4) Ако ще се занимаваш сериозно с тези неща - договори се с фирмата, която ще достави фискалните принтери за твоя бъдещ продукт. В техен интерес е да ти помогнат и почти всяка фирма ще ти предостави тестов принтер или ще ти даде възможност да изпробваш своя код на такъв.
5) Знаеш ли какво значи RTFM? На въпроси като горния ти това ще бъде най-логичният отговор. Прочети какво пише в хелпа на делфито какво пише за ShareMem. Обърни внимание на следното: ShareMem should always be the first unit listed in any program or library uses clause where it occurs. Трябва да го цитираш в uses клаузата на проектния ти файл (dpr файла), а не на твоя модул, а камо ли пък в implementation часта му!
В заключение ще ти препоръчам да си намериш малко литература за компютърна архитектура (някакви учебници за началните курсове ще свършат работа), програмиране с делфи (има много линкове в този форум, а и на пазара се продават много книги) и да понатрупаш малко практически опит в програмирането, преди да се захващаш с подобни амбициозни проекти.
Успех с четенето и ако имаш някакви конкретни въпроси - прояви малко повече уважение към хората, от които очакваш помощ. Уверявам те, ще получиш компетентно съдействие при решаването на проблемите ти!
Re: Не се сдържам да допълния
Точно така. Замисли се над това което е написъл колегата. Аз се опитах няколко пъти да ти го кажа, но явно тона ми не ти харесва. Не може да порочетеш тук-там по малко, да копираш това онова и без да разбираш какво е да го изсипеш в един файл, да разбъркаш хубаво и то да се сготви! Ако изобщо искаш да се занимаваш с тази материя запомни едно - "уЕсно нЕма".
В интернет има тонове информация по темата. Почни едно по едно, какво е:
памет
процесор
регистър
основни типове данни
променлива / константа
какво е Pointer (веднага ще си отговориш и на въпроса какво е EInvalidPointerOperation)
цикли, функции, calling conventions (stdcall,cdcall,fastcall...) и т.н.
Когато разбереш из основи тези (и още много други) неща, и като научиш какво изобщо представлява един dll (какво е статично и динамично свързване и т.н.) може да се опиташ да го ползваш. И да ти кажа сигурно ще успееш (а и да не успееш поне ще знаеш какво значи EInvalidPointerOperation). А сега какво правиш? Имал си бил функция F и тя не се викала. Като гледам тоя FP3530_TLB дето си го сложил в Uses-а май тая функция F изобщо не ти трябва. Явно имаш и FP3530.exe и FP3530.tlb, ама не знаеш че можеш да го ползваш като ActiveX control ДИРЕКТНО!, без да правиш още един dll. Ама от къде ще знаещ като те мързи да четеш и изобщо нямащ представа както е ".tlb" и ActiveX.
Извинявай за тона (за твое добро е) ама просто спри с тоя фискален принтер и хвани "Програмиране за начинаещи" (или нещо от сорта) защото иначе ще се превърнеш в "Селския идиот" на форума.
Както се казва: "Той не знае дроб да дели, получава висше образование!"
В интернет има тонове информация по темата. Почни едно по едно, какво е:
памет
процесор
регистър
основни типове данни
променлива / константа
какво е Pointer (веднага ще си отговориш и на въпроса какво е EInvalidPointerOperation)
цикли, функции, calling conventions (stdcall,cdcall,fastcall...) и т.н.
Когато разбереш из основи тези (и още много други) неща, и като научиш какво изобщо представлява един dll (какво е статично и динамично свързване и т.н.) може да се опиташ да го ползваш. И да ти кажа сигурно ще успееш (а и да не успееш поне ще знаеш какво значи EInvalidPointerOperation). А сега какво правиш? Имал си бил функция F и тя не се викала. Като гледам тоя FP3530_TLB дето си го сложил в Uses-а май тая функция F изобщо не ти трябва. Явно имаш и FP3530.exe и FP3530.tlb, ама не знаеш че можеш да го ползваш като ActiveX control ДИРЕКТНО!, без да правиш още един dll. Ама от къде ще знаещ като те мързи да четеш и изобщо нямащ представа както е ".tlb" и ActiveX.
Извинявай за тона (за твое добро е) ама просто спри с тоя фискален принтер и хвани "Програмиране за начинаещи" (или нещо от сорта) защото иначе ще се превърнеш в "Селския идиот" на форума.
Както се казва: "Той не знае дроб да дели, получава висше образование!"