用Delphi编写可被其它语言调用的DLL

在所开以的应用软件中,有时我们对某些文件进行拷贝(如对数据库进行备份、制作安装程序),但是常用的一些语言却没有提供可直接进行文件拷贝的过程或函数。为此,我曾利用Delphi编制了可提供文件拷贝过程的动态连接库Copy.dll,其输出过程为CopyFile。由于DLL具有简化编程、运行速度快等诸多优点,且不受编程语言的限制,

用Delphi编写的Copf.dll同样被VB、VC等面向对象语言进行静态或动态调用,人而方便地在程序中实现文件拷贝。

附源程序如下:

library copf;
uses
SysUntils,Classes;
procedure copyfile(Sfname.Dfname:string):far;export;//带路径的文件名;
Var
Sourcef,Destinef:file;
NumRead,NumWritten:Integer;
Buf:array[1..4096] of char;//定义缓冲区;
Begin
AssignFile(Sourcef,dfname);
Reset(Sourcef,1);
AssignFile(Destinef,1);
Rewrite(Destinef,1);
Repeat
BlockRead(Sourcef,Buf,SizeOf(Buf),Numread);//读源文件
BlockWrite(destinef,buf,NumRead,NumWritten);//写目标文件;
Until (Numread=0) or (Numwritten<>numread);
closeFile(soucef);
Closefile(destinef);
end;
Esports

copyfile;//输出过程;

end;

以上源程序编译后便生成Copf.dll

现就静态调用举例:

unit Name;
interface
uses
Windows...;
Type
Tzcform=class(Tform)
...
end;
var
Form1:Tform1;
implementation
Procedure copyfile(Sfname,dfname:string);far;external'c:\copf';//DLL路径名;
{$R *.DFM}
Procedure Tform1.CopyButtonclick(sender:tobject);
Begin
...
if fileesist(sfname)//如果源文件;
then copyfile(sfname,dfname);
... end;

时间: 2024-09-10 03:15:45

用Delphi编写可被其它语言调用的DLL的相关文章

api c-怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

问题描述 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

代码-用java语言编写android程序,实现调用usb打印机图片功能

问题描述 用java语言编写android程序,实现调用usb打印机图片功能 用java语言编写android程序,实现调用usb打印机图片功能,打印机不能联网,只是用代码去调用usb接口的打印机.急需实现此功能,请大神们帮帮忙 解决方案 http://blog.csdn.net/kangear/article/details/18141741 解决方案二: http://www.360doc.com/content/13/0906/12/11482448_312596809.shtml

vc++-新人求帮助:VC6 调用delphi编写的com组件函数 报错

问题描述 新人求帮助:VC6 调用delphi编写的com组件函数 报错 代码: IElectric *ptr = NULL; CLSID clsid; HRESULT hr = CLSIDFromString((LPOLESTR)L"{18F86FFB-158B-42D6-9203-C4197A4E76FE}",&clsid); hr = CoInitialize(0); if(!SUCCEEDED(hr)) { int nCode = GetLastError(); } h

c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存

问题描述 c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存 delphi函数原型 Procedure invoke(params :PChar; result : PChar) ; 解决方案 把这个delphi的原型改一下,改为 Function Pchar invoke(params :PChar) ; 再试试 解决方案二: Function invoke(params: PAnsiChar): PAnsiChar ;

.Net(C#) 调用Delphi 编写的DLL

问题描述 我通过动态加载动态库的方式调用Delphi编写的DLL的一个方法,执行时没问题,但是在调试时会出错:尝试在非托管DLL中执行托管代码步骤如下:通过WindowsAPI加载Delphi编写的DLL取得方法的指针将取得的方法转换为一个方法原型相同的委托实例A.(原型为:delegatevoidFuncation())A.Invoke();调试时就是这一步出错:尝试在非托管DLL中执行托管代码谁可以告诉我这个是什么原因? 解决方案 解决方案二:[DllImport("Delphidllnam

Delphi编写组件封装asp代码的基本步骤

如果你想脱离asp爱好者的水平,那么你就应该学会为asp编写组件.我在google上搜索了一下,Delphi编写asp组件的文章一共就几篇,所以今天写了这篇Delphi编写asp组件的基础文章,希望对新手有点帮助.    开始吧,让我们一起编写一个"hello world!"的示例.我这里用的是Delphi 7.     1.文件->新建->其他->ActiveX->ActiveX Library,然后保存成showdll.dpr 2.再次,文件->新建-

tts-求助:vc编写语音合成程序,在调用语音库时,遇到的问题

问题描述 求助:vc编写语音合成程序,在调用语音库时,遇到的问题 求助各位大神: 本人最近学习通过vc调用MS Speech SDK的方式实现语音合成的方法.其中,语音库使用的是"ScanSoft_MeiLing_ChineseMandarinVoice".程序运行正常,语音正常. 可是在程序连续正常运行7-8天之后,突然就没有语音了. 尝试了各种方法之后,发现:在将"ScanSoft_MeiLing_ChineseMandarinVoice"语音库卸载,重新安装之

delphi-替换Delphi中调用的dll

问题描述 替换Delphi中调用的dll 在一段Delphi编写的dll中调用了另外一个一个A.dll,现在想将这个A.dll替换为自己写的B.dll.只是知道A大概的功能,B是自己写的,中间需要注意些什么? 解决方案 用depend看下导出表,有什么函数名,函数序数,然后用ollydbg之类的工具调试,看看参数是怎么传的,通过堆栈可以分析出来. 然后自己照着写. 解决方案二: Delphi 调用VC的DLLDelphi调用DLL中的接口Delphi调用DLL中的接口

c-C语言调用函数实现矩阵自乘

问题描述 C语言调用函数实现矩阵自乘 各位前辈,小弟新学C语言,怎么也调试不过,不知道哪里出了问题,请问我该怎么调试? 调用void SelfMul(int A1[][3],int A2[][3],int n)实现3阶矩阵的乘法 #include //void SelfMul(int A1[][maxSize],int A2[][maxSize],int n) void SelfMul(int A1[][3],int A2[][3],int n) { int s=0; for(int i=0;i