小编Jos*_*ine的帖子

FASM - 如果文件存在 - 使用GetFileAttributes - INVALID_FILE_ATTRIBUTES值?

我在FASM中使用GetFileAttributesA来确定文件是否存在.我知道如果文件不存在,返回值将为INVALID_FILE_ATTRIBUTES,但我不知道如何检查此值.

我的代码:

invoke GetFileAttributes,lpFileName
cmp    eax,IDK WHAT TO CHECK FOR
je     notfound
jne    found
invoke ExitProcess,0
Run Code Online (Sandbox Code Playgroud)

看作编译器无法将INVALID_FILE_ATTRIBUTES识别为值:

cmp    eax,INVALID_FILE_ATTRIBUTES
Run Code Online (Sandbox Code Playgroud)

不管用.

有没有人知道这个常数的值,所以我可以手动输入它?

任何帮助表示赞赏.谢谢


在JensBjörnhager的回复之后,以下是其他任何感兴趣的人的工作代码:

invoke GetFileAttributes,lpFileName
cmp    eax,-1
je     notfound
jne    found
invoke ExitProcess,0 
Run Code Online (Sandbox Code Playgroud)

甚至:

invoke GetFileAttributes,lpFileName
cmp    eax,$ffffffff
je     notfound
jne    found
invoke ExitProcess,0 
Run Code Online (Sandbox Code Playgroud)

再次感谢JensBjörnhager!

assembly winapi file-exists fasm

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

FASM - 将字符串传递给Delphi DLL

我在Delphi XE2中使用以下代码编写了一个DLL:

procedure xMain(MSG:String);export;
begin
  MessageBox(0,PWideChar(MSG),'Title',0);
end;

exports xMain;
Run Code Online (Sandbox Code Playgroud)

现在,我在FASM应用程序中导入此函数,如下所示:

library  dllfile, "testdll.dll"

import   dllfile,\
         xMain,   "xMain"
Run Code Online (Sandbox Code Playgroud)

利用就是如此:

section ".data" data readable writeable

szMSG     db "Message from FASM application!",0

section ".code" code readable executable

invoke    xMain,szMSG
Run Code Online (Sandbox Code Playgroud)

但是生成的消息框会出现扭曲的字符,如下所示:

在此输入图像描述

这是函数调用的确切结果.

我该如何解决这个问题?

delphi dll messagebox dllimport fasm

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

Delphi - 逐行拆分

注意:我使用的是Delphi 7.

有没有办法通过换行符拆分字符串?

我想要以下内容:

procedure Split
   (const Delimiter: Char;
    Input: string;
    const Strings: TStrings) ;
begin
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;

var
  xMSG:String;
  xStr:String;
  xStrList:TStrings;
  xLineBreak:String;
  xHello:String;
  xWorld:String;
begin
  xLineBreak := AnsiString(#13#10);
  xMSG := 'Hello ' + xLineBreak + 'World';
  xStrList := TStringList.Create;
  Split(xLineBreak,AnsiString(xMSG),xStrList);
  xHello := xStrList[0];
  xWorld := xStrList[1];
  MessageBox(0,PAnsiChar(xHello + xWorld),'Test',0);
end.
Run Code Online (Sandbox Code Playgroud)

delphi split line-breaks delphi-7

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

Delphi - 需要Delphi7的XE2代码.使用wininet下载文件

注意:我只想使用wininet,而不是urlmon-urldownloadtofile.

好吧,我有以下代码在XE2中完美地下载文件:

procedure DownloadFile(URL: string; Path: string);
const
  BLOCK_SIZE = 1024;
var
  InetHandle: Pointer;
  URLHandle: Pointer;
  FileHandle: Cardinal;
  BytesRead: Cardinal;
  DownloadBuffer: Pointer;
  Buffer: array [1 .. BLOCK_SIZE] of byte;
  BytesWritten: Cardinal;
begin
  InetHandle := InternetOpen(PWideChar(URL), 0, 0, 0, 0);
  URLHandle := InternetOpenUrl(InetHandle, PWideChar(URL), 0, 0, 0, 0);
  FileHandle := CreateFile(PWideChar(Path), GENERIC_WRITE, FILE_SHARE_WRITE, 0,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
  DownloadBuffer := @Buffer;
  repeat
    InternetReadFile(URLHandle, DownloadBuffer, BLOCK_SIZE, BytesRead);
    if not WriteFile(FileHandle, DownloadBuffer, BytesRead, BytesWritten, 0) or
  (BytesWritten <> BytesRead) then
      RaiseLastOSError;
  until BytesRead < …
Run Code Online (Sandbox Code Playgroud)

delphi wininet download delphi-7 code-conversion

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

Delphi XE2 - 继承类不调用基类的构造函数......?

在创建一个继承自另一个类的类时,在创建派生类时,是否应该调用基类的构造函数?

Type
  TBase = Class
    constructor xMain;
  End;
  TDerived  = Class(TBase)
    constructor xMain;
  End;

constructor TBase.xMain;
begin
  MessageBox(0,'TBase','TBase',0);
end;

constructor TDerived.xMain;
begin
  MessageBox(0,'TDerived','TDerived',0);
end;


Var
  xTClass:TDerived;
begin
  xTClass := TDerived.xMain;
end.
Run Code Online (Sandbox Code Playgroud)

我认为这应该导致MessageBox显示"TBase"然后"TDerived".但事实并非如此.当上面的代码运行时,它只会导致一个MessageBox显示"TDerived".

delphi inheritance class

0
推荐指数
2
解决办法
426
查看次数

PHP - 列出数据库条目的内容

我试图通过PHP列出数据库表中的所有条目.

这是db的预览:

在此输入图像描述

这是我的PHP代码:

<?PHP
include('config.php');
$db_found = mysql_select_db($dbase, $db_handle);
if ($db_found) 
{
    $xSQL = "SELECT * FROM Logins";
    $result = mysql_query($xSQL);
    while ($db_field = mysql_fetch_assoc($result)) 
    {
        echo $db_field['Username'] . ":" . $db_feild['Password'] . '<br />';    
    }
}
else 
    {
        print "Database NOT Found ";
        mysql_close($db_handle);
    }
?>
Run Code Online (Sandbox Code Playgroud)

以下是最终结果:

在此输入图像描述

我希望结果显示:

用户名2:密码1

USERNAME1:密码1

我错过了我的代码中的错误,如果有的话.任何帮助表示赞赏.

php database phpmyadmin

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