小编use*_*144的帖子

如何在不使用ShareMem Unit的情况下将动态数组字符串传递给dll库(d7和d7编写的客户端)?

我在这个页面上看到动态数组需要ShareMem单元才能正常工作.

不过,我想为其他语言编写一个dll.

谁能告诉我如何声明函数及其参数来传递String数组?

没有ShareMem,是不是真的不允许这样的事情?

var
  templates : array of WideString;
begin
  SetLength(templates, 2); 
  templates[0] := 'template1';
  templates[1] := 'template2';
end
DLLFunction(@templates[0]); 
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

arrays delphi string dll delphi-7

8
推荐指数
1
解决办法
2183
查看次数

线程,com +调用SendMessage消息

我有一个应用程序,它创建一个通过Windows消息与主UI通信的线程.它只是将消息发送到主应用程序线程并收到状态.

这样我就可以显示模态窗口并执行其他操作.

问题是当我必须显示一个调用com +服务器的表单时.这样我就得到了OLE错误8001010D:由于应用程序正在调度输入同步调用,因此无法进行传出调用.

我认为这是因为主要的SendMessage正在使用中,而且com +调用需要为其任务执行Windows消息传递.

无论如何,在delphi中我无法从线程中显示表单,但是我如何解决问题...?

谢谢

编辑:

  1. MAIN(UI)2.一个线程

A.线程(2)向主线程(1)发送消息B.主线程(1)接收消息,在让它返回线程之前显示窗口.C.主线程中的模态窗口想要进行com +调用,发生上述错误.


  1. 模态窗口在哪个线程?2. COM调用来自哪个线程?3.实例化COM对象的哪个线程?4.后台线程是否使用STA初始化?5.模态表单是否从SendMessage处理程序中显示? - 罗马R. 2分钟前

    1. 主要
    2. 主要
    3. 主要
    4. CoInitializeEx(零,COINIT_MULTITHREADED);
    5. 是.

delphi com winapi delphi-7

6
推荐指数
1
解决办法
1415
查看次数

当文件不存在时,File.Delete不会抛出错误

生产平台上出现了奇怪的问题(64位win 2008服务器).它File.ExistsFile.Delete方法有关......

在调试的测试平台(win xp)等,它工作正常.在Server 2008上
File.Exists报告true的文件最初几次不存在...

当我进行进一步测试时,File.Exists最终报告错误的文件不存在.
但是File.Delete在尝试删除不存在的文件时没有抛出任何错误...

怎么了 ... ?

我在某处看到系统虚拟化可能会搞砸了......但是还没有找到任何文件: %userprofile%\AppData\Local\VirtualStore

.net c# file windows-server-2008

6
推荐指数
1
解决办法
9077
查看次数

将二进制数据传递到D7中的dll函数

任何人都可以为我提供通过参数将任意数量的字节传递给dll函数的工作示例吗?

我想在没有任何额外内存单元的情况下完成它,只需要在基本的Windows类型上运行.

我需要每次调用"发送"大约300 kb的数据.

客户端分配的内存是否也应该在客户端免费?

delphi dll delphi-7

4
推荐指数
1
解决办法
819
查看次数

如何将指针转换回字节数组(或流)?

我有一个函数,它创建指向Stream数据的指针.

function StreamToByteArray(Stream: TStream): Pointer;
var
  ByteArr: array of Byte;
begin
  if Assigned(Stream) then
  begin
    Stream.Position := 0;
    SetLength(ByteArr, Stream.Size);
    Stream.Read(ByteArr[0], Stream.Size);
  end
  else
    SetLength(ByteArr, 0);
  result := @ByteArr[0];
end;
Run Code Online (Sandbox Code Playgroud)

如何将其转换回来,从指针转换为动态字节数组,然后将内容保存到流中.或者也许可以直接从指针加载流?

感谢帮助.

delphi delphi-7

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

delphi ×4

delphi-7 ×4

dll ×2

.net ×1

arrays ×1

c# ×1

com ×1

file ×1

string ×1

winapi ×1

windows-server-2008 ×1