如何在Delphi 7中使用GetTextExtentPoint32W在输出之前获取宽字符串的像素宽度和高度?
我用它TIniFile来保存应用程序数据.现在我想试试TMemIniFile.
我在哪里可以找到关于它们的好教程?
我有一个随机的数字串
(数字只能使用一次,只能使用1-9,几乎任何长度(最小1,最大9)):
var
Input: String;
begin
Input := '431829576'; //User inputs random numbers
Run Code Online (Sandbox Code Playgroud)
而现在我需要获得指定的数字.如何5.
var
Number: Integer;
begin
Number := 5;
Run Code Online (Sandbox Code Playgroud)
和函数执行结果543182976.
我没有任何想法如何制作这样的功能,谢谢.
显然,我不明白构造函数是如何工作的.
当我的应用程序启动时,它会自动或在需要时执行我的程序来加载所有资源 - 主要是图像.
procedure Load;
begin
AppPath := GetAppPath;
INI := TInIFile.Create(AppPath + '\Config.ini');
INI.WriteBool('Application', 'Running', True);
ResPath := AppPath + '\Resources';
Top := TPicture.Create;
TopRight := TPicture.Create;
Left := TPicture.Create;
Right := TPicture.Create;
BottomLeft := TPicture.Create;
Bottom := TPicture.Create;
BottomRight := TPicture.Create;
...
//Load the pictures ...LoadFromFile(Skin.ReadString('Skin', ..., ...));
Run Code Online (Sandbox Code Playgroud)
当我使用这个应用程序时,它开始有点滞后,但操作系统开始冻结和滞后.当我在任务管理器中看到我的程序时,我感到很震惊:

如果我是对的,应用程序使用600兆内存,包含页面文件.我的系统只有1 GB的RAM,因此难怪操作系统和几乎每个程序都因页面文件的使用而开始滞后.
原来这是每次我做某事时加载资源的相同程序.我通过向单元添加布尔值来修复它,并且当它被设置为true时取消了该过程(意味着加载了资源).
Loaded: Boolean;
...
if Loaded = False then Load;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我必须做出改变.为什么构造函数首先为已经创建的对象分配内存?
所以我有可能包含不同章程的数据列表:
1dAAbt54
agFlE9dA
1295RTdd
Run Code Online (Sandbox Code Playgroud)
第一行数据包含:1d,AA,bt,54.我需要的只是给出给定索引数据的函数.示例:索引6的数据为Fl(行-2,行中的索引为2).每行长度为8,数据长度为2;
我怎样才能在Delphi中实现这样的功能?
结果函数应该是这样的:
procedure (DataList: TStringList; DataIndex: Integer; var LineIndex: Integer; var PosInLine: Integer);
begin
//do the algorithm
end;
Run Code Online (Sandbox Code Playgroud)
对不起,我的英语不好...