我正在开发一个项目,需要非常有效地操作一组 32 位。内存效率至关重要,因此使用布尔数组(占用 32 个字节)不是一个选择(如果我可以有其他选择,速度是最重要的)。
这是我为 TBitSet32 设想的结构:
TBitSet32 = record
value: ?integer?; // I'm not sure about the datatype here. Should it be Integer or another type?
// Gets the value associated with a particular bit index.
function valueForBit(index: integer): boolean;
// Returns the number of marked bits in the set.
function count: integer;
// Marks the specified bit.
procedure markBit(value: boolean; index: integer);
end;
Run Code Online (Sandbox Code Playgroud)
对于值字段,我认为我需要 32 位整数类型。Integer 这里的选择正确吗?如何实现 valueForBit、count 和 markBit 方法?
对于此记录的任何见解或示例实现,我将不胜感激。
这是代码,我得到这两个错误 1: 8,14 非法表达式和 2: 8,1 ''警告:变量 k 似乎没有初始化
program komunaluri_1;
var
den, g, w, das, k : integer;
begin
den := 21;
g := 50;
w := 340;
das := 250;
k = w + g + den + das;
write('your total is'); write(k);
end.
Run Code Online (Sandbox Code Playgroud)
我试图将所有这些数字相加,然后写出总数,但我似乎无法修复任何这些错误
program s;
type info = record
name, surname: string;
min, sec: integer;
end;
arrays = array[2..50] of info;
var A: arrays;
begin
A[1].name := 'name';
end.
Run Code Online (Sandbox Code Playgroud)
这有什么问题?它给了我范围检查错误,我不知道那是什么.
我的代码抛出异常.为什么?
program Masquerade(input, output);
Begin
var amount, count, money : integer;
writeln ('Welcome to the Wonder True Masquerade Band');
writeln ('Would you like to proceed? Yes/No');
var choice : String;
readln (choice);
End.
Run Code Online (Sandbox Code Playgroud)
抛出错误: fatal: syntax error ";" expected but "identifier AMOUNT" found
分号应该去哪里?
假设此类定义正在运行
TStringListNF = class (TStringList)
procedure TestContenu (verif : Boolean);
destructor DestroyList;
destructor DestroyListFree;
end;
Run Code Online (Sandbox Code Playgroud)
而且这门课的班级也在工作
destructor TStringListNF.DestroyList;
{//Verified 27 june 98}
var
i : Integer;
tempItem : TObject;
begin
for i:= 0 to Count-1 do
begin
tempItem := Objects[i];
tempItem.destroy;
end;
inherited destroy;
end;
destructor TStringListNF.DestroyListFree;
{//Verified 27 june 98}
var
i : Integer;
tempItem : TObject;
begin
for i:=0 to Count-1 do
begin
tempItem := Objects[i];
if tempItem <> nil then
tempItem.destroy;
end;
inherited destroy;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么有两个析构函数以及如何在c#中复制两个析构函数
正如你所看到的那样,代码已经过时但是正在工作,我试图让它在c#上工作,所以我要做的只是创建一个析构函数并在析构函数中做我想做的事情?
我想找到解决方案,我怎么能像这样拆分字符串:
abkgwvc
Run Code Online (Sandbox Code Playgroud)
要array通过人物?预期产出是:
array[0] = a
array[3] = g
...
Run Code Online (Sandbox Code Playgroud)
任何的想法?
for i := 0 to length(string) do
begin
array[i] = copy(string, i, 1);
end;
Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi项目中的Synapse库来进行一些网络连接.
当我尝试使用外部单元中定义的类型之一时,即:'TTCPBlockSocket',它有红色下划线并显示"Undeclared Identifier'TTCPBlockSocket'".
这些文件都在正确的文件夹中,'uses'语句可以找到它们并显示没有错误.
奇怪的是,我在另一个项目中有相同的设置,并且该项目中没有错误.
注意:我无法安装/编辑软件/设置,因此我无法添加任何修复程序.
我试图从数组中删除一个项目。数组不是动态的!
我发现了很多有关如何针对动态变体执行此操作的示例,但没有针对静态变量的示例。
来自delphi的示例:
var
A: array of integer;
begin
...
A:=[1,2,3,4];
Delete(A,1,2); //A will become [1,4]
...
end;
Run Code Online (Sandbox Code Playgroud)
另一个站点的示例:
type
TIntArray = array of Integer;
procedure DeleteArrayElement(var AArray: TIntArray; const AIndex: Integer);
begin
Move(AArray[AIndex + 1], AArray[AIndex], SizeOf(AArray[0]) * (Length(AArray) - AIndex - 1));
SetLength(AArray, Length(AArray) - 1);
end;
...
//call via
DeleteArrayElement(IntArray, 3);
...
Run Code Online (Sandbox Code Playgroud)
我的数组定义为0 .. 11,所以这不是动态的(我猜)?
当我尝试使用SetLength函数时,它表示不兼容的类型。
任何想法如何解决这个问题?
我正在编写一个用Delphi转换的程序,旧程序保存了文件路径.所以我必须得到这些文件,他们的路径在注册表中,如下所示:
HKEY_LOCAL_MACHINE -> SOFTWARE-> Company->Program-> Pos1, Stack, Pop
Run Code Online (Sandbox Code Playgroud)
所以计划下有喜欢的几个籍图Pos1,Stack,Pop等,他们每个人都有属性有所谓的WorkStation是路径,我需要得到.所以我在寻找是否有办法扫描所有的东西并获得这条路径?或者我是否需要了解注册表的每个路径?
所以下面是我创建的代码模块,用于验证用户输入是否在一个范围之间,但是这个错误一直出现在它下面'语句预期但找到函数',任何想法?非常感谢
function get_choice(var Options: integer): integer;
var
choice: integer;
begin
while (true) do
begin
write('choose option 1 to', Options);
try
readln(choice);
if (choice>=1) and (choice <=Options) then
get_choice := choice
else
write('invalid range');
except
write('not a number');
end;
end;
Run Code Online (Sandbox Code Playgroud)