小编jim*_*web的帖子

为什么调用GetMem会导致内存泄漏?

我有这个代码,看看我的前景窗口是否是SDImainframe.

Function Active_window_mf() :Boolean;
var
  FromClass: PChar;
begin

  MFhandle := GetForeGroundWindow;
  GetMem(FromClass, 100);
  GetClassName(MFhandle, PChar(FromClass), 800);
  if StrPas(FromClass) = 'SDIMainFrame' then
    result := true;
end;
Run Code Online (Sandbox Code Playgroud)

但是,MADExcept报告Getmem功能存在问题.任何人都可以建议,我的代码有什么问题?

delphi

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

当在Delphi中运行一个巨大的for循环时,为什么'form close'事件没有发生?

我正在尝试下面的代码.但是,如果在此代码运行时单击窗体的关闭按钮,则不会发生任何操作.我怎么能纠正这个?即使执行此循环,我也需要关闭表单.

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to 9999999 do
  begin
    Memo1.Lines.Add('hi');
    Application.ProcessMessages;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi performance pascal delphi-xe2

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

用管理员权限写信给HKLM

我正在使用'run as admin ...'运行我的delphi应用程序,右键单击exe.此应用程序具有以下代码以插入HKLM注册表.

begin
    kValue := 'testing';
    Reg.CloseKey;
    Reg.Free;
    try
      Reg := TRegistry.Create(KEY_READ OR KEY_WOW64_64KEY);
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      Reg.OpenKey('SOFTWARE\explorev2', True);
      Reg.WriteString('test', kValue);
      Result := Reg.ReadString('test');
    except
      ;
    end;
Run Code Online (Sandbox Code Playgroud)

我得到例外'未能为'test'设置数据; 虽然应用程序以管理员权限运行.任何人都可以帮帮我..?

delphi

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

阻止读取错误

任何人都可以解释一下为什么我在下面的块读取中遇到'I/O错误998'?

function ReadBiggerFile: string;
var
  biggerfile: file of char;
  BufArray: array [1 .. 4096] of char; // we will read 4 KB at a time
  nrcit, i: integer;
  sir, path: string;
begin
  path := ExtractFilePath(application.exename);
  assignfile(biggerfile, path + 'asd.txt');
  reset(biggerfile);
  repeat
    blockread(biggerfile, BufArray, SizeOf(BufArray), nrcit);
    for i := 1 to nrcit do
    begin
      sir := sir + BufArray[i];
      Form4.Memo1.Lines.Add(sir);
    end;
  until (nrcit = 0);
  closefile(biggerfile);
  ReadBiggerFile := sir;
end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-unicode

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

将剪贴板中的文本保存到文件中

我正在尝试下面的代码,应该将剪贴板文本保存到Delphi XE6中的文本文件中.代码运行正常,但在输出文件中只生成垃圾值,即使剪贴板包含复制的文本片段也是如此.如何更改代码才能正常工作?

function SaveClipboardTextDataToFile(
  sFileTo : string ) : boolean;
var
  ps1,
  ps2   : PChar;
  dwLen : DWord;
  tf    : TextFile;
  hData : THandle;
begin
  Result := False;
  with Clipboard do
  begin
    try
      Open;
      if( HasFormat( CF_TEXT ) ) then
      begin
        hData :=
          GetClipboardData( CF_TEXT );

        ps1 := GlobalLock( hData );
        dwLen := GlobalSize( hData );

        ps2 := StrAlloc( 1 + dwLen );

        StrLCopy( ps2, ps1, dwLen );

        GlobalUnlock( hData );

        AssignFile( tf, sFileTo );
        ReWrite( tf );
        Write( tf, …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe6

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