小编dan*_*gph的帖子

Delphi .dproj文件中的<DCCReference>标记是什么?

我碰巧注意到一个<DCCReference>标记引用了一个甚至不存在的文件.这些标签有什么意义?删除它们会带来什么后果?

delphi delphi-2007

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

将TInterfacedObject转换为接口

根据Delphi文档,我可以TInterfacedObject使用as运算符转换为接口.

但它对我不起作用.强制转换产生编译错误:"运算符不适用于此操作数类型".

我正在使用Delphi 2007.

这是一些代码(控制台应用程序).标记包含错误的行.

program Project6;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  IMyInterface = interface
    procedure Foo;
  end;

  TMyInterfacedObject = class(TInterfacedObject, IMyInterface)
  public
    procedure Foo;
  end;

procedure TMyInterfacedObject.Foo;
begin
  ;
end;

var
  o: TInterfacedObject;
  i: IMyInterface;
begin
  try
    o := TMyInterfacedObject.Create;
    i := o as IMyInterface;  // <--- [DCC Error] Project6.dpr(30): E2015 Operator not applicable to this operand type
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

delphi interface delphi-2007

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

const记录参数是否放在堆栈中?

假设我有一个名为的记录类型TSomeRec:

type
  TSomeRec = record
    // ...
  end;
Run Code Online (Sandbox Code Playgroud)

...以及一个带有const TSomeRec参数的过程:

procedure SomeProc(const someRec: TSomeRec);
begin
  // ...
end;
Run Code Online (Sandbox Code Playgroud)

SomeProc调用时,const someRec参数是作为值还是作为引用传递给堆栈的?

我问的原因是,在我正在处理的代码中,有问题的记录类型包含一个庞大的静态数组,因此是巨大的.(不,我无法改变它.)我很担心将这么大的记录放在堆栈上,我认为这const可能会有所帮助.我遇到了这个代码溢出堆栈的问题,当发生这种情况时,我只会遇到神秘的访问冲突而不是任何类型的堆栈溢出错误.

delphi stack

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

Delphi的解析器生成器?

任何人都可以推荐一个生成win32 Delphi代码的解析器生成器吗?我要做的是创建一个简单的领域特定语言.

delphi dsl parser-generator

4
推荐指数
2
解决办法
2866
查看次数

如何从C#构造PythonTuple

我想用C#构造一个IronPython元组.这些是PythonTuple的公共构造函数:

    public PythonTuple();
    public PythonTuple(object o);
Run Code Online (Sandbox Code Playgroud)

例如,我将如何构造元组(1,2,3)?

ironpython

3
推荐指数
1
解决办法
1965
查看次数

如何在Visual Studio 2008中使用Python中的制表符作为空格?

我有一些嵌入在C#项目中的IronPython脚本,能够在VS编辑器中编辑它们会很方便.VS显然知道Python,因为它为它提供了语法着色.不幸的是,编辑器使用制表符进行缩进,而我想要空格.有没有改变这个的设置?我没有在Tools/Options/TextEditor下看到Python的标题.

python ironpython visual-studio-2008 visual-studio

3
推荐指数
1
解决办法
1296
查看次数

使用Filehelpers库忽略十进制字段中的美元货币符号($)

假设我有一个像这样的Filehelpers类:

[DelimitedRecord(",")]
public class SomeRecord
{
    public string Field1;
    public decimal Field2;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试导入这样的CSV记录:

hello,$4.00
Run Code Online (Sandbox Code Playgroud)

我得到一个FileHelpers.ConvertException:"错误转换'$ 4.00'到类型:'十进制'."

如何让Filehelpers忽略$符号?

c# filehelpers

3
推荐指数
1
解决办法
595
查看次数

从进程块调用函数

我想从我的 PowerShell 脚本的 Process 和 End 块中调用一个特定的函数。这是最小的代码:

# MyScript.ps1

function MyFunc
{
    "hello"
}

Begin 
{
}

Process 
{
    MyFunc
}

End 
{
    MyFunc
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码不会执行。我收到此错误:

开始:术语“开始”不是 cmdlet、函数、脚本文件或可运行程序的名称。

powershell

3
推荐指数
1
解决办法
1066
查看次数

如何将方法限制为特定线程?

我有一个方法,出于线程安全的原因应该只有特定的线程使用.如果另一个线程试图使用它,我想抛出一个异常.

public void UnsafeMethod()
{
    if (CurrentThreadId != this.initialThreadId)
        throw new SomeException("Can only be run on the special thread.");
    // continue ...
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能CurrentThreadId在上面的代码中找到?或者是否有其他方式来实现我想做的事情?

.net c# multithreading

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

Delphi错误E2010不兼容的类型:'字符串'和'过程,无类型指针或无类型参数'

我使用了 TStringList 和类似的东西:

geo: TStringList;
response: TStringStream;
  begin
  http:=tidhttp.Create(nil);
  try
    { TODO -oUser -cConsole Main : Insert code here }
    geo:=TStringList.Create;
    response:=TStringStream.Create('');
    geo.Add('name=stas');
    geo.Add('pass=431');
    s:=http.Get('http://test.me');
    writeln(http.ResponseText);
    writeln(s);
    s:=http.Post('http://test.me',geo,response);
Run Code Online (Sandbox Code Playgroud)

但有些不对劲。例如,当我运行它时,它会发出警报并[[DCC Error] consoleHttp.dpr(29): E2010 Incompatible types: 'string' and 'procedure, untyped pointer or untyped parameter']显示s:=http.Post('http://test.me',geo,response). 我做错了什么?

delphi console indy

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

如何从 PowerShell 将缺少的可选参数传递给 VBA 方法

我有一个 Word (Office 2013) 文档,我需要将该文档的每一页拆分为单独的 PDF。因此,我使用 PowerShell 将其组合在一起。

$Word = New-Object -ComObject Word.Application
$Word.Visible = $true

$Doc = $Word.Documents.Open($SourceFile)

for ($pageNo = 1; $pageNo -le 50; $pageNo++)
{
    $OutputFile = $OutputDirectory + "\MyFile_" + $pageNo + ".pdf"

    $Doc.ExportAsFixedFormat($OutputFile, [Microsoft.Office.Interop.Word.WdExportFormat]::wdExportFormatPDF, $false, [Microsoft.Office.Interop.Word.WdExportOptimizeFor]::wdExportOptimizeForPrint, [Microsoft.Office.Interop.Word.WdExportRange]::wdExportFromTo, $pageNo, $pageNo, [Microsoft.Office.Interop.Word.WdExportItem]::wdExportDocumentContent, $false, $false, [Microsoft.Office.Interop.Word.WdExportCreateBookmarks]::wdExportCreateNoBookmarks, $false, $true, $false, $null)
}

$Doc.Close()    
$Word.Quit()
Run Code Online (Sandbox Code Playgroud)

我已经做到了最后一个参数,它期望 this 是对此的引用。

[ref] System.Object FixedFormatExtClassPtr
Run Code Online (Sandbox Code Playgroud)

我尝试传入 $null, 0,每个都带或不带 [ref],但出现此错误:

参数:“15”应该是 System.Management.Automation.PSReference。使用[参考]。

关于我需要为最后一个参数传递什么有什么想法吗?或者,有更简单的方法来完成这项任务吗?

powershell vba ms-word

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