标签: pascal

如何在 Delphi 中创建 TBitSet32 记录以实现高效的 32 位操作?

我正在开发一个项目,需要非常有效地操作一组 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 方法?

对于此记录的任何见解或示例实现,我将不胜感激。

delphi pascal freepascal

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

这个非法表达式在帕斯卡中意味着什么?

这是代码,我得到这两个错误 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)

我试图将所有这些数字相加,然后写出总数,但我似乎无法修复任何这些错误

pascal

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

数组的Pascal错误

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)

这有什么问题?它给了我范围检查错误,我不知道那是什么.

arrays pascal

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

在pascal程序中非法表达

我的代码抛出异常.为什么?

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

分号应该去哪里?

pascal

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

Delphi/pascal析构函数和c#

假设此类定义正在运行

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#上工作,所以我要做的只是创建一个析构函数并在析构函数中做我想做的事情?

c# delphi pascal

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

Pascal - 按字符将字符串拆分为数组

我想找到解决方案,我怎么能像这样拆分字符串:

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)

string pascal

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

Pascal Delphi - 未声明的标识符

我正在使用Delphi项目中的Synapse库来进行一些网络连接.

当我尝试使用外部单元中定义的类型之一时,即:'TTCPBlockSocket',它有红色下划线并显示"Undeclared Identifier'TTCPBlockSocket'".

这些文件都在正确的文件夹中,'uses'语句可以找到它们并显示没有错误.

奇怪的是,我在另一个项目中有相同的设置,并且该项目中没有错误.

注意:我无法安装/编辑软件/设置,因此我无法添加任何修复程序.

delphi pascal identifier apache-synapse

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

从静态数组中删除元素

我试图从数组中删除一个项目。数组不是动态的!

我发现了很多有关如何针对动态变体执行此操作的示例,但没有针对静态变量的示例。

来自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函数时,它表示不兼容的类型。

任何想法如何解决这个问题?

arrays delphi pascal

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

使用名称读取所有注册表值

我正在编写一个用Delphi转换的程序,旧程序保存了文件路径.所以我必须得到这些文件,他们的路径在注册表中,如下所示:

HKEY_LOCAL_MACHINE -> SOFTWARE-> Company->Program-> Pos1, Stack, Pop
Run Code Online (Sandbox Code Playgroud)

所以计划下有喜欢的几个籍图Pos1,Stack,Pop等,他们每个人都有属性有所谓的WorkStation是路径,我需要得到.所以我在寻找是否有办法扫描所有的东西并获得这条路径?或者我是否需要了解注册表的每个路径?

delphi pascal

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

期望语句但功能在我的功能代码中发现错误

所以下面是我创建的代码模块,用于验证用户输入是否在一个范围之间,但是这个错误一直出现在它下面'语句预期但找到函数',任何想法?非常感谢

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)

delphi pascal

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

标签 统计

pascal ×10

delphi ×6

arrays ×2

apache-synapse ×1

c# ×1

freepascal ×1

identifier ×1

string ×1