小编Ari*_*The的帖子

如何在运行时检测某些编译器选项(如断言)是否设置为ON?

检查断言是否在Delphi中处于活动状态的条件是什么?

当代码中的断言不活动时,我希望能够做一些事情来抑制有关未使用变量的提示

procedure Whatever;
var
   v : Integer;
begin
   v := DoSomething;
   Assert(v >= 0);
end;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当断言未激活时,会有一个关于变量v被赋予从未使用的值的提示.

代码在一个将在各种环境中使用的库中,因此我能够专门测试断言,而不是像DEBUG那样的自定义条件.

delphi assert runtime conditional-compilation

7
推荐指数
1
解决办法
681
查看次数

如何在Microsoft Visual C++中使用dllimport

我有一个DLL,我想使用它的一些功能.

#include <iostream>

using namespace std;

extern "C" __declspec(dllimport) int Initialize(char* localPort, char* adminServerName, int rpcTimeout);


int main()
{
    int res = Initialize("7864", "6000@kabc", 10000);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我没有DLL的.lib文件,所以无论如何我可以链接到它.我想到的一件事是使用LoadLibrary函数,然后使用GetProcAddress().还有其他方法吗?

当我编译以下代码时

  • 错误LNK2019:函数_main中引用的未解析的外部符号_ imp _Initialize

  • 致命错误LNK1120:1个未解析的外部因素

我得到了上述错误

我正在使用Windows和Visual Studio 2008

c++ linker dllimport linker-errors visual-c++

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

用于delphi IDE的增强型Object Inspector Expert插件

我记得有些人做了他的一个IDE专家,更换了库存对象检查员添加过滤等

但我坦率地忘了它的名字

它是如此通用,谷歌搜索我只能得到OI的运行时克隆,而不是IDE加载项.

ide delphi add-in inspector

6
推荐指数
2
解决办法
785
查看次数

Delphi如何使用Pointer(无类型)参数解决重载函数?

以下是一些重载函数.试着猜出那些被调用的功能.

program Project2;
    {$APPTYPE CONSOLE}

uses
  Types, SysUtils;

procedure Some(const Buf); overload;
  begin
    Writeln('const-typeless')
  end;

//procedure Some(var Buf); overload;
//  begin
//    Writeln('var-typeless')
//  end;

//procedure Some(Buf :TByteDynArray); overload;
//  begin
//    Writeln('Byte dynamic array');
//  end;

procedure Some(Buf :array of Byte); overload;
  begin
    Writeln('Byte open array');
  end;

procedure Some(Buf :TArray<Byte>); overload;
  begin
    Writeln('TBytes AKA byte generic array');
  end;

//procedure Some(Buf :TBytes); overload;
//  begin
//    Writeln('TBytes AKA byte generic array');
//  end;

var p: pointer;

begin
  try
    { TODO …
Run Code Online (Sandbox Code Playgroud)

arrays delphi pointers overloading overload-resolution

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

Delphi 64位asm编译错误

以下函数不使用64位Delphi XE2编译器进行编译.(错误都与fld指令有关.)

[dcc64 Error] Project1.dpr(12): E2116 Invalid combination of opcode and operands 
[dcc64 Error] Project1.dpr(13): E2116 Invalid combination of opcode and operands
[dcc64 Error] Project1.dpr(20): E2116 Invalid combination of opcode and operands
Run Code Online (Sandbox Code Playgroud)

第12和13行:

fld Y
fld X
Run Code Online (Sandbox Code Playgroud)

第20行:

fld X
Run Code Online (Sandbox Code Playgroud)

不幸的是我没有装配技能,而且我正在使用第三方代码,我需要将其移植到64位.你能帮助我使它在32位和64位上工作吗?

function PartArcTan(Y, X: Extended): Extended;
asm
  fld Y              // st(0) = Y
  fld X              // st(0) = X
  fpatan             // st(0) = ArcTan(Y, X)
  fwait
end;

function ArcSin(X: Extended): Extended; // -1 <= X <= 1
asm …
Run Code Online (Sandbox Code Playgroud)

delphi assembly fpu 32bit-64bit delphi-xe2

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

如何开始使用Delphi Prism制作网站?

我是Delphi Prism 2011的新手.在哪里可以找到编写和测试基本Hello,世界类型网站的分步说明?我需要编写,运行和调试一个简单的网站,以了解IDE的工作原理,并确保包括与Microsoft IIS的链接的安装是正确的.提供相同信息的备用教程也没问题.谢谢.

delphi.net oxygene delphi-prism

5
推荐指数
0
解决办法
860
查看次数

Delphi IDE 的 REPL?

http://en.wikipedia.org/wiki/REPL读取\xe2\x80\x93eval\xe2\x80\x93print_loop

\n\n

Delphi 有这样的东西吗?\n在处理几乎没有记录的边界情况时,探索 DLL(例如 Windows APi)并概述它们的用法将非常有用。

\n\n

我尝试过 pascal 脚本,例如 Cnwizards 中的脚本,但它不太舒服。\n例如,它不能使用像 Windows.pas 这样的单位,你必须为它制作一些你自己的奇怪的存根。

\n\n

无论如何,这些脚本在“尝试这个尝试那个”场景中不如 Repl 那么容易使用。

\n\n

对于 Delphi 对象,大多数情况下它会在断点处暂停并使用评估/修改窗口,但它仅适用于 Delphi 对象,不适用于 DLL;它不能创建临时变量来缓存值等。

\n

delphi delphi-xe2 read-eval-print-loop

5
推荐指数
1
解决办法
992
查看次数

如何设置Excel列类型和格式?

我正在将数据从CxDBGrid导出到Excel文件.我能够创建文件并在其中复制数据,但我在列格式化方面遇到了麻烦.由于我从数据库中提取数据,我希望电子表格能够反映出类型:NUMBER,VARCHAR2,DATE等等.我在视觉上创建了一个宏,去寻找VBA代码,并在Delphi项目中复制它:

sheet.Columns[K+2].NumberFormat := '0,000'; //Number
sheet.Columns[K+2].NumberFormat := '@'; //Text
sheet.Columns[K+2].NumberFormat := 'm/d/yyyy'; //Date
Run Code Online (Sandbox Code Playgroud)

数字格式在大多数情况下都可以正常工作,但其他两个则没有.当我打开生成的文件时,文本列显示为"Custom"类型,每个单元格显示"-64".如果我去编辑一个单元格,那么实际上就是正确的值.日期是另一个问题:数据库的格式是dd/mm/yyyy,如果我按原样将其提供给Excel,它会搞得一团糟.我尝试设置正确的格式,但Excel无法识别它.

有线索吗?

我也设置了列宽.这完美无瑕.

delphi excel quantumgrid delphi-xe2

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

具有不同签名的功能指针(示例:带有默认值的可选参数)

是否可以使用默认参数创建一个函数指针

TFunctionPointer = function(sName:AnsiString; tOptional: TObject = nil):smallint;
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:

一个函数指针,可以接受类型的函数

function A(sName:AnsiString)
Run Code Online (Sandbox Code Playgroud)

要么

function B(sName:AnsiString, tOptional: TObject)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

delphi function-pointers signature

5
推荐指数
1
解决办法
522
查看次数

读写文本文件的最佳方式

我使用的是Lazarus IDE的最新版本,Memo1我的TForm1上有一个.我必须加载一个文本文件Memo1,然后编辑备忘录的每一行(我使用Memo1.Lines.Strings[i] := ...).最后,我必须将编辑的备忘录保存在特定路径中.

问题:我正在寻找更快的方式:

  1. 在备忘录中加载整个文本,编辑其内容并保存到新文件中(全部加载 - >全部编辑 - >全部写入)
  2. 做一个while循环(直到我的*.txt文件末尾)逐行读取文件,编辑内容并将其保存在新文件中.(加载行 - >编辑 - >写入|加载 - >编辑 - >写入|加载行 - >编辑 - >写入... ...)

我是Delphi开发的新手,我也读过一些关于TStringLists.我的文本文件将有很多行(它可能有5000多行),我不希望我的程序失去性能.

有什么建议吗?我应该使用TStringList我之前列出的两种方法之一吗?

delphi file-io text-files lazarus fpc

5
推荐指数
1
解决办法
9773
查看次数