小编Jen*_*off的帖子

代码保存在注册表中的设置

我有一个弹出菜单..每次用户登录系统时,都会出现弹出菜单,但对于不希望弹出窗口显示在屏幕上的用户,我使用复选框以便每次登录时都不会显示弹出窗口.我想如何在注册表中保存选中复选框的用户的设置,以便不显示弹出菜单

delphi registry application-settings

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

如何保护加密密钥免受逆向工程的影响?

我的软件使用的是AES Rijndael.

我使用SHA-256哈希从具有任意长度的字符串生成密钥,然后将其作为私钥和公钥传递,因为在这种情况下我不需要区分这两者.

如何保护我的密钥不被可执行文件侵入?

我知道不要使用文字,而是在运行时使用一些预定的步骤生成密钥,但是所有相同的密钥在发送到AES初始化函数之前仍然在内存中,因此可以非常容易地检索.

AES显然非常安全,但是如果有人打破了可执行文件,那对我有什么好处?

解决这个问题时有一些常见的做法吗?

security aes rijndael encryption-symmetric

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

如何根据结果类型重载函数?

只是一个问题,我有:

myclass = class
public
  function Funct1: String;
  function Funct2: Integer;
end;
Run Code Online (Sandbox Code Playgroud)

这让我感到错误,所以我尝试过:

myclass = class
public
  function Funct1: String; overload;
  function Funct2: Integer; overload;
end;
Run Code Online (Sandbox Code Playgroud)

但同样的问题; delphi告诉我有相同的参数.现在,我问,是否可以在模式下执行具有相同名称但具有不同输出的更多功能,如示例中所示?非常感谢您的帮助.

UPDATE

对不起,我做错了,不是funct1和funct2,但两个都是funct1,所以:

myclass = class
public
  function Funct1: String; overload;
  function Funct1: Integer; overload;
end;
Run Code Online (Sandbox Code Playgroud)

这样做,编译器会给我这个错误:

[DCC错误] Project1.dpr(15):E2252具有相同参数的方法'funct1'已存在[DCC错误] Project1.dpr(22):E2037'funct1'的声明与之前的声明不同

当然,我知道因为给出错误并需要更改两个函数之一的名称(因为我之前感到困惑)但我想知道是否有一些技巧或其他解决方案,因为这样的情况没有错误.再次感谢.

delphi overloading delphi-xe2

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

试图制作一个清单:名称"Gee"不存在

我正试图在Genie中列出一个列表并且它似乎不起作用.编译代码:

[indent=2]
init
  var l = new list of string
Run Code Online (Sandbox Code Playgroud)

产生这些错误:

someone@someone-UBook:~/Documents$ valac helloworld.gs helloworld.gs:2.10-2.24: error: The name `Gee' does not exist in the context of `main'
    var l = new list of int
            ^^^^^^^^^^^^^^^
helloworld.gs:2.8-2.24: error: var declaration not allowed with non-typed initializer
    var l = new list of int
          ^^^^^^^^^^^^^^^^^
Compilation failed: 2 error(s), 0 warning(s)
Run Code Online (Sandbox Code Playgroud)

我已经安装了libgee2(通过sudo apt-get install libgee2),没有任何改变.有任何想法吗?

vala genie libgee

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

如何使用AllowSetForegroundWindow?

我在不同的应用程序中有两个窗口。第一个应用程序有一个按钮,可使用其窗口句柄和进程 ID 启动第二个应用程序:

procedure TForm1.Button1Click(Sender: TObject);
begin
  WinExec(PChar('Second.exe ' + IntToStr(Handle) + ' ' + IntToStr(GetCurrentProcessId)), SW_SHOWDEFAULT);
end;
Run Code Online (Sandbox Code Playgroud)

第二个应用程序还有一个按钮,应将前台窗口设置为第一个应用程序:

function AllowSetForegroundWindow(AHandle: HWND): Boolean; external 'user32.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not AllowSetForegroundWindow(StrToInt(ParamStr(2))) then begin
    ShowMessage('ERROR');
    Exit;
  end;
  SendMessage(StrToInt(ParamStr(1)), WM_APP + 1, 0, 0);
end;
Run Code Online (Sandbox Code Playgroud)

第一个应用程序有一个消息处理程序,其处理方式WM_APP + 1如下:

procedure TForm1.WWAppPlusOne(var Msg: TMsg);
begin
  Application.BringToFront;
end;
Run Code Online (Sandbox Code Playgroud)

当我启动第一个应用程序并按下按钮时,第二个应用程序启动。当我按下第二个应用程序上的按钮时,它会显示ERROR.

我在这里做错了什么?

delphi winapi window

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

为什么TStringStream在转换为字符串时不会删除BOM?

我们有一个库函数,如下所示:

class function TFileUtils.ReadTextStream(const AStream: TStream): string;
var
  StringStream: TStringStream;
begin
  StringStream := TStringStream.Create('', TEncoding.Unicode);
  try
    // This is WRONG since CopyFrom might rewind the stream (see Remys comment)
    StringStream.CopyFrom(AStream, AStream.Size - AStream.Position);
    Result := StringStream.DataString;
  finally
    StringStream.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我检查函数返回的字符串时,第一个Char是(小端)BOM.

为什么TStringStream不会忽略BOM?

有一个更好的方法吗?我不需要向后兼容旧的Delphi版本,XE2的工作解决方案也没问题.

delphi unicode delphi-xe2

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

E2251对"Pos"System.pas(28005)的过度调用

    [dcc32 Error] psystr.pas(249): E2251 Ambiguous overloaded call to 'Pos'
    System.pas(28005): Related method: function Pos(const string; const string; Integer):         Integer;
    System.pas(28165): Related method: function Pos(const WideString; const WideString;     Integer): Integer;
Run Code Online (Sandbox Code Playgroud)

我在以下功能上遇到上述错误.我怎样才能解决这个问题?代码是由另一个程序员给我的,但我是一个完全的业余,所以简单的答案将不胜感激!

function ExplodeStr(const AString: WideString; AWordIndex: Integer; AChar: Char): WideString;
var
  Index, Counter: Integer;
begin
  Result  := Trim(AString);
  Counter := 0;
  Index   := Pos(AChar + AChar, Result);
  while Index > 0 do
  begin
    Delete(Result, Index, 1);
    Index := Pos(AChar + AChar, Result);
  end;
  Index := Pos(AChar, Result);
  while ((Counter < AWordIndex) …
Run Code Online (Sandbox Code Playgroud)

delphi pascal delphi-xe3

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

为什么TRichEdit在转换为纯文本时会插入不在RTF代码中的换行符?

我有这个RTF代码:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang7\f0\fs22 Dies ist eine Textdatei mit einigen Umlauten und Sonderzeichen:\par
\'c4\'d6\'dc\'df\'ea\'80\'fb\'fa\'f9\par
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码(来自这个问题):

class function TRTF.Decode(const AInput: string): string;
var
  RichEdit: TRichEdit;
  Stream: TStringStream;
begin
  RichEdit := CreateRichEdit;
  try
    Stream := TStringStream.Create(AInput);
    try
      RichEdit.Lines.LoadFromStream(Stream);
      Result := RichEdit.Lines.Text;
    finally
      Stream.Free;
    end;
  finally
    RichEdit.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我正在将其解码为纯文本,结果是:

Dies ist eine Textdatei mit 
einigen Umlauten und 
Sonderzeichen:
ÄÖÜßê€ûúù
Run Code Online (Sandbox Code Playgroud)

我想知道为什么TRichEdit在第一段插入额外的换行符?

有什么办法可以控制这种行为吗?

delphi rtf richtext delphi-xe2

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

为什么我的代码导致I/O 104错误?

EoF首次进入while循环时,该程序会引发I/O 104错误.

该程序的目的是查找是否已经使用了用户名.现有用户名存储在文本文件中.

procedure TForm1.btnRegisterClick(Sender: TObject);
begin
  sCUser := edtUserName.Text;
  AssignFile(tNames, 'Names.txt');
  begin
    try
      Reset(tNames);
    except
      ShowMessage('File not found');
      Exit;
    end;
  end;
  rewrite(tNames);
  while not EoF(tNames) do // I get a I/O 104 Error here `
  begin
    Readln(tNames, sLine);
    iPosComme := Pos(',', sLine);
    sUser     := Copy(sLine, 1, iPosComme - 1);
    Delete(sLine, 1, iPosComme - 1);
    if sCUser = sUser then begin
      ShowMessage('Username taken');
    end
    else
    begin
      rewrite(tNames);
      Writeln(tNames, sCUser + ',' + '0');
      CloseFile(tNames);
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

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

JS的简写为if else

我正在努力提高我的编码技能,但我似乎无法弄清楚这一点.如何以速记书写以下内容?

/* fade */
$('.toggle-ui').on({
    'click': function (e) {
        e.preventDefault();
        var divToFade = ['#logo', '#hide-interface'];

        $.each(divToFade, function(intValue, currentElement) {
            // check alpha state and switch
            var currOp = $(currentElement).css('opacity');

            if (currOp == 1) $(currentElement).css('opacity', 0.5);
            if (currOp == 0.5) $(currentElement).css('opacity', 1);
        });
    }
Run Code Online (Sandbox Code Playgroud)

javascript shorthand

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