gpt4 book ai didi

delphi - 如何使用SysUtils.FileWrite api写入txt文件?

转载 作者:行者123 更新时间:2023-12-03 19:38:14 26 4
gpt4 key购买 nike

我想使用SysUtils.FileWrite api将我的电脑的名称写到txt文件中,最后一次尝试是成功编写的,但麻烦的是视觉上正在切割某些字符,但是文件中文本的大小完全相同好像字符串在视觉上是完整的。

例如:我的电脑被称为“ TESTE-PC”(不带双引号)。字符串“ TESTE-PC”(不带双引号)正好有8位,但是SysUtils.FileWrite仅写入“ TEST”,并且文件大小为8位。很奇怪! :(

感谢您的任何建议。

uses
Registry;

...

function GetCompName: string;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.rootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName', false) then
begin
Result := Reg.ReadString('ComputerName');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
hFile: THandle;
Str: PWideChar;
begin

if not fileexists('test.txt') then
begin
Str := PWideChar(GetCompName);
hFile:= CreateFile('test.txt', GENERIC_WRITE, 0, nil, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, 0);
FileWrite(hFile, Str^, Length(Str));
CloseHandle(hFile);
end;

end;

最佳答案

str的类型更改为RawByteString而不是PWideChar

procedure TForm1.FormCreate(Sender: TObject);
var
hFile: THandle;
sFileName: string;
Str: RawByteString;
begin
Str := PWideChar(GetCompName);
sFileName := 'Test.txt';
if fileExists(sFileName) then
hFile := fileOpen(sFileName,fmOpenReadWrite)
else
hFile := fileCreate(sFileName);
try
FileWrite(hFile,
PChar(Str)^, Length(Str));
finally
FileClose(hFile);
end;
end;

关于delphi - 如何使用SysUtils.FileWrite api写入txt文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com