小编bar*_*ris的帖子

Delphi上的大位图

我想用代码创建大型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.

delphi graphics bitmap

7
推荐指数
3
解决办法
2086
查看次数

如何通过Delphi 7将文件上传到Dropbox?

我尝试将文件上传到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传递参数?

delphi oauth dropbox indy-9

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

如何以编程方式检查修改权限?

如何以编程方式检查文件夹的创建文件权限?修改文件权限?删除文件权限?
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 uac file-permissions

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

插入UTF8数据库时格式错误的字符串

我使用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)

delphi firebird utf-8 delphi-2010 firebird2.5

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

更改环境值后的 Innosetup SendMessage

我使用 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 列:类型不匹配

我该如何正确的类型转换PCharLongint在InnoSetup脚本?

winapi casting inno-setup

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

如何在Delphi 7中使用chm?

如何在Delphi 7程序中调用chm文件的帮助?

Application.HelpFile := 'd:\help.chm';
Application.HelpCommand(HELP_CONTEXT, 10);
Run Code Online (Sandbox Code Playgroud)

结果是

为什么我不能从这个程序中获得帮助?

此程序的帮助是以Windows帮助格式创建的,该格式取决于此版本Windows中未包含的功能.但是,您可以下载一个程序,该程序将允许您查看以Windows帮助格式创建的帮助.

有关更多信息,请访问Microsoft帮助和支持网站.

delphi chm delphi-7

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

模块"MyShellExt.dll"无法加载

我在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.

这意味着我应该将这些库包含在我的安装包中.

如何关闭使用这些库?

c++ dll shell-extensions visual-studio-2010

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

如何将文本字符串发送到服务?

我有桌面应用程序和服务.如何将桌面应用程序中的字符串发送到我的服务中并在服务中处理?

我不想使用套接字,因为它可能被Windows防火墙阻止.

delphi service

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