我想用代码创建大型Bitmap
LargeBmp := TBitmap.Create;
try
LargeBmp.Width := 1000; // fine
LargeBmp.Height := 15000; // XP - EOutOfResources, Not enough memory, Win 7 - works fine
...
finally
FreeAndNil(LargeBmp);
end;
Run Code Online (Sandbox Code Playgroud)
此代码EOutOfResources在Windows XP上引发了"内存不足" 的异常,但在Windows 7中运行正常.
怎么了?为什么内存不足?它只有60 MB.
我尝试将文件上传到Dropbox.
我使用dropbox api https://www.dropbox.com/developers/reference/api#files-POST
procedure TDropbox.Upload2;
const
URL = 'https://api-content.dropbox.com/1/files/dropbox/';
var
Response: String;
Params: TIdMultipartFormDataStream;
https: TIdHTTP;
SslIoHandler: TIdSSLIOHandlerSocket;
begin
https := TIdHTTP.Create(nil);
Params := TIdMultipartFormDataStream.Create();
try
SslIoHandler := TIdSSLIOHandlerSocket.Create(https);
SslIoHandler.SSLOptions.Method := sslvTLSv1;
SslIoHandler.SSLOptions.Mode := sslmUnassigned;
https.IOHandler := SslIoHandler;
Params.AddFormField('oauth_signature_method', 'PLAINTEXT');
Params.AddFormField('oauth_consumer_key', FAppKey);
Params.AddFormField('oauth_token', FOAuth.AccessToken);
Params.AddFormField('oauth_signature', FAppSecret + '&' + FOAuth.AccessTokenSecret);
Params.AddFile('file', 'C:\test.txt', 'application/octet-stream');
https.Post(URL + 'test.txt', Params);
finally
FreeAndNil(https);
FreeAndNil(Params);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我得到了"400 Bad request".
所有令牌都是正确的(其他api效果很好).
如何为这个api传递参数?
如何以编程方式检查文件夹的创建文件权限?修改文件权限?删除文件权限?
GetNamedSecurityInfo返回我可以写入,C:\Program Files但UAC说Access Denied (5)
我如何有效地确定访问权限?
我的代码:
function GetAccessRights(const FileName: String; ObjectType: SE_OBJECT_TYPE;
var Access: Cardinal): Cardinal;
var
SecDesc: PSECURITY_DESCRIPTOR;
pDacl: PACL;
Trusteee: TRUSTEE_;
begin
result := GetNamedSecurityInfo(PChar(FileName), ObjectType,
DACL_SECURITY_INFORMATION, nil, nil, @pDacl, nil, SecDesc);
if ERROR_SUCCESS = result then
begin
// the pDacl may be NULL if the object has unrestricted access
if pDacl <> nil then
begin
with Trusteee do
begin
pMultipleTrustee := nil;
MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE;
TrusteeForm := TRUSTEE_IS_NAME;
TrusteeType := TRUSTEE_IS_UNKNOWN;
ptstrName …Run Code Online (Sandbox Code Playgroud) 我使用Delphi 2010,Firebird 2.5.2,IBExpress组件.
数据库字符集是UTF8.在db-connection UTF8中.
数据库:
var
Database: TIBDatabase;
begin
...
Database.params.Clear;
Database.params.Add('user ''SYSDBA'' password ''masterkey'' ');
Database.params.Add('page_size 16384');
Database.params.Add('default character set UTF8');
Run Code Online (Sandbox Code Playgroud)
表:
CREATE TABLE NEW_TABLE (
NEW_FIELD VARCHAR(255)
);
Run Code Online (Sandbox Code Playgroud)
连接代码:
Database.params.Clear;
Database.params.Add('user_name=SYSDBA');
Database.params.Add('password=masterke');
Database.params.Add('sql_role_name=UTF8');
Database.Open;
Run Code Online (Sandbox Code Playgroud)
插入代码:
var
IBSQL: TIBSQL;
begin
IBSQL := TIBSQL.Create(nil);
try
IBSQL.Database := db;
IBSQL.Transaction := tr
IBSQL.SQL.Text := 'insert into NEW_TABLE (NEW_FIELD) values (:param)';
IBSQL.params[0].Value := 'Ãabc©'; // unsupported symbols :(
if not IBSQL.Transaction.Active then
IBSQL.Transaction.StartTransaction;
IBSQL.ExecQuery; // "Malformed string" exception here
if IBSQL.Transaction.Active …Run Code Online (Sandbox Code Playgroud) 我使用 InnoSetup 在注册表中设置环境变量:
[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: string; ValueName: "MY_PROGRAM_HOME_DIR"; ValueData: "{app}"
Run Code Online (Sandbox Code Playgroud)
但是系统无法看到这个变量,直到我调用SendMessage.
[Code]
procedure DeinitializeSetup();
begin
// HWND_BROADCAST = $FFFF
// WM_SETTINGCHANGE = $001A
SendMessage($FFFF, $001A, 0, Longint(PChar('Environment')));
end;
Run Code Online (Sandbox Code Playgroud)
InnoSetup 说:
... 第 60 列:类型不匹配
我该如何正确的类型转换PChar成Longint在InnoSetup脚本?
如何在Delphi 7程序中调用chm文件的帮助?
Application.HelpFile := 'd:\help.chm';
Application.HelpCommand(HELP_CONTEXT, 10);
Run Code Online (Sandbox Code Playgroud)
结果是
为什么我不能从这个程序中获得帮助?
此程序的帮助是以Windows帮助格式创建的,该格式取决于此版本Windows中未包含的功能.但是,您可以下载一个程序,该程序将允许您查看以Windows帮助格式创建的帮助.
有关更多信息,请访问Microsoft帮助和支持网站.
我在Visual Studio 2010中编写了一个Shell扩展.它实现了一个Context Menu Handler和File Icon Handler.
在使用Visual Studio的计算机上,它运行良好.但在其他计算机上,注册MyShellExt.dll失败并显示消息
[窗口标题]
的RegSvr32
[内容]
模块"MyShellExt.dll"无法加载.
确保二进制文件存储在指定的路径中或对其进行调试以检查二进制或从属.DLL文件的问题.
指定的模块无法找到.
[好]
我检查了依赖项,发现以下文件必须与MyShellExt.dll在同一个文件夹中:msvcr100.dll,msvcp100.dll,atl100.dll.
这意味着我应该将这些库包含在我的安装包中.
如何关闭使用这些库?
我有桌面应用程序和服务.如何将桌面应用程序中的字符串发送到我的服务中并在服务中处理?
我不想使用套接字,因为它可能被Windows防火墙阻止.