如何从 .lib 文件中提取所有 .obj 文件?我发现的唯一方法是一次提取一个。有没有办法让它自动化?
LIB.EXE /EXTRACT:member.obj Library.LIB
Run Code Online (Sandbox Code Playgroud) 我试图使用StackAlloc从Graphics32在DelphiXE7的X64但它与erorr崩溃.我尝试添加NOFRAME代码,但也没有帮助.
First chance exception at $000000000013FF10. Exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. Process Stack.exe (4536)
program Stack;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
System.Classes;
function StackAlloc(Size: Integer): Pointer; register;
asm
{$IFDEF CPUX86}
POP ECX // return address
MOV EDX, ESP
ADD EAX, 3
AND EAX, not 3 // round up to keep ESP dword aligned
CMP EAX, 4092
JLE @@2
@@1:
SUB ESP, 4092
PUSH EAX // make sure we touch guard page, …Run Code Online (Sandbox Code Playgroud) 如何在 Delphi 中使用 C++ 类?我试图通过抽象类使用它。然而它并没有按预期工作,我从 中得到了奇怪的数字Age();。
德尔福:
program Test;
{$APPTYPE CONSOLE}
type
IPerson = class
function Age(): Integer; overload; virtual; stdcall; abstract;
procedure Age(const Value: Integer); overload; virtual; stdcall; abstract;
end;
const
DLL = 'Interface.DLL';
procedure FreePerson(const Person: IPerson); external DLL;
function CreatePerson(): IPerson; external DLL;
var
Person: IPerson;
I: Integer;
begin
Person := CreatePerson;
Person.Age(10);
I := Person.Age(); // I is not 10?
end.
Run Code Online (Sandbox Code Playgroud)
C++:
extern "C" class _declspec(dllexport) IPerson
{
virtual void Age(const int Value) = …Run Code Online (Sandbox Code Playgroud) 如何IServiceProvider在我继承其他接口的类中实现,以便实际调用它们的方法?现在我总是E_NOINTERFACE回来QueryInterface.
TPassthrough = class(TComObject, IInternetProtocolRoot, IInternetProtocolSink, IInternetProtocol, IServiceProvider)
private
FDefaultSink: IInternetProtocol;
FProtSink: IInternetProtocolSink;
FBindInfo: IInternetBindInfo;
public
{ IServiceProvider }
function QueryService(const rsid, iid: TGuid; out Obj): HResult; stdcall;
{ IInternetProtocolSink }
function Switch(const ProtocolData: TProtocolData): HResult; stdcall;
function ReportProgress(ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall;
function ReportData(grfBSCF: DWORD; ulProgress, ulProgressMax: ULONG): HResult; stdcall;
function ReportResult(hrResult: HResult; dwError: DWORD; szResult: LPCWSTR): HResult; stdcall;
{ IInternetProtocolRoot }
function Start(szUrl: LPCWSTR; OIProtSink: IInternetProtocolSink; OIBindInfo: IInternetBindInfo; grfPI, dwReserved: DWORD): …Run Code Online (Sandbox Code Playgroud) 我试图使用WebWorkerStarted并WebWorkerFinished从TWebbrowser然而事件只是不明白在所有被解雇.
我怎样才能使这些活动有效?我想看看哪些工作线程正在启动TWebbrowser.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw;
type
TForm2 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1WebWorkerFinsihed(ASender: TObject; dwUniqueID: Cardinal);
procedure WebBrowser1WebWorkerStarted(ASender: TObject; dwUniqueID: Cardinal; const bstrWorkerLabel: WideString);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.stackoverflow.com');
end;
procedure TForm2.WebBrowser1WebWorkerFinsihed(ASender: TObject; dwUniqueID: Cardinal);
begin
// …Run Code Online (Sandbox Code Playgroud) 如何迭代单个字符UTF8String?我需要打印出单个字符而不是字节..
program Project3;
uses
System.SysUtils;
var
Str: UTF8String;
I: Integer;
begin
Str := '?????';
for I := 0 to Length(Str) do
WriteLn(Str[I]);
ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)