标签: pascal

多维数组上的SetLength

我想知道如何设置多维数组的长度/在Pascal中创建动态多维数组.就像SetLength(arr,len)一维数组一样.我找不到答案.

pascal dynamic multidimensional-array

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

字符串在单独的.pas文件中

如果不随意移动它,这可能不是这个问题的正确位置.我标记为Delphi/Pascal,因为它是我在atm工作的,但这可能适用于我猜的所有编程.

无论如何,我正在做一些代码清理,并考虑将程序中的所有字符串移动到单独的.pas文件中.这样做有利有弊吗?它甚至值得做吗?

澄清一下:我的意思是我将创建一个单独的文件,Strings.pas中我会创建所有文本字符串变量.

防爆

现行守则

 Messages.Add('The voucher was NOT sent to ' + sName+
                          ' because the application is in TEST MODE.');
 Messages.Add('Voucher Saved to ' + sFullPath);
 Messages.Add('----------------------------------------------------------');
Run Code Online (Sandbox Code Playgroud)

新代码将是这样的:

Messages.Add(sMsgText1 + '' + sName + '' + sMsgText2 + '' + sFullPath)
Run Code Online (Sandbox Code Playgroud)

Strings.pas文件将保存所有字符串数据.希望更有意义

delphi pascal

12
推荐指数
3
解决办法
966
查看次数

屏幕录像机

我对用Delphi/Pascal或C++编写的库(用于windows)感兴趣,它允许我记录(到视频格式)桌面屏幕,要求:

  • 必须能够指定帧速率,或者至少能够记录@ 5fps;
  • 必须是开源的或免费的;
  • 输出格式几乎可以是任何格式,但质量必须足够好才能从录制中读取文本;

如果可能的话:

  • 没有颜色的记录选项(灰度);
  • 多显示感知 ;
  • 跨平台(Windows和Linux,其他平台也不错,但不是必需的);

如果有任何机会,我没有解释正确的事情,请随时问我所以我可以改写或提供更多细节等.

c++ delphi pascal freepascal delphi-2010

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

检查字符是否是Delphi中的字母(Unicode)

在Delphi中是否有预定义的字符集,以检查字符是否是字母?

在Cocoa我使用类似的东西

if ([[NSCharacterSet whitespaceCharacterSet] characterIsMember:character])
Run Code Online (Sandbox Code Playgroud)

我知道我可以在德尔福做

if c in ['A'..'Z'] then
Run Code Online (Sandbox Code Playgroud)

但这会涵盖Á,À,Ú,É,......等外国人强调的角色吗?

在Delphi中检查这个的最有效方法是什么.我需要检查字符串是否完全由字母组成.

delphi pascal delphi-xe

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

为什么Pascal const数组实际上不是常量?

  Program ConstTest;
  Const constVar = 1;
  Begin
    constVar := 3;
    WriteLn(constVar);
  End.
Run Code Online (Sandbox Code Playgroud)

很明显上面的代码不会编译,因为改变常量的值是不对的.但是,下面的代码将编译,并将返回"1; 5; 3;",即使数组是const:

Program ConstTest;
  Const constArr:Array [1..3] Of ShortInt = (1,2,3);
  Var i:ShortInt;
  Begin
    constArr[2] := 5;
    For i:=1 To 3 Do WriteLn(constArr[i],'; ');
  End.
Run Code Online (Sandbox Code Playgroud)

那么,是什么导致了这种行为?为什么常数实际上不是常量?

我正在使用FreePascal Compiler 2.2.0 for Win32.

arrays pascal const freepascal

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

返回Pascal中的值

对于在Pascal中返回值的函数,FunctionName := SomeVal;使用赋值.我认为它不会像return在C中那样在那个确切的位置停止函数执行.return在Pascal中有类似C的东西吗?(我正在使用FreePascal编译器)

pascal freepascal

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

如何计算两个字符串之间的差异?

我想在Delphi中创建一个函数来计算两个字符串的不同级别.如果两个字符串相等(忽略大小写),则它应返回0,但如果它们不相等,则应返回不同字符的数量.此功能对于检查拼写非常有用.

function GetDiffStringLevel(S1,S2:string):Integer;
begin
  if SameText(S1,S2) then Exit(0);
  // i want get different chars count
end
Run Code Online (Sandbox Code Playgroud)

样品代码:

Diff:=GetDiffStringLevel('Hello','Hello');// Diff:=0;
Diff:=GetDiffStringLevel('Hello','2Hello');// Diff:=1;
Diff:=GetDiffStringLevel('Hello','H2ello');// Diff:=1;
Diff:=GetDiffStringLevel('Hello','Hello W');// Diff:=2;
Diff:=GetDiffStringLevel('Hello','World');// Diff:=6; or 5
Run Code Online (Sandbox Code Playgroud)

delphi string pascal

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

Pascal substr等价物

我正在寻找一个Pascal等价物(例如)php的substr函数,它的工作原理如下:

$new_string = substr('abcdef', 1, 3);  // returns 'bcd'
Run Code Online (Sandbox Code Playgroud)

我已经找到了它,但我总是花费太长时间才这样做,所以我发布了像我这样的其他人的答案,以便能够轻松找到它.

pascal substring substr

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

Pascal的正确结构语法如果然后开始结束; (在Inno设置中)

自从我上次在Pascal写作以来已经有20年了.我似乎无法正确使用语言的结构元素,而不是使用begin和end的块.例如,这给我一个编译器错误"标识符预期"

procedure InitializeWizard;
begin
  Log('Initialize Wizard');
  if IsAdminLoggedOn then begin
    SetupUserGroup();
    SomeOtherProcedure();
  else begin (*Identifier Expected*)
    Log('User is not an administrator.');
    msgbox('The current user is not administrator.', mbInformation, MB_OK);
    end  
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当然,如果我删除if then块和begin与它们相关的块,那么一切都OK.

有时我会得到这种语法,并且它可以正常运行,但是在嵌套end块时问题会变得恼怒.

解决这个问题还不够.我想更好地了解如何使用这些块.我显然错过了一个概念.来自C++或C#的东西可能正在从我的另一部分中悄悄进入并弄乱我的理解.我已经阅读了一些关于它的文章,我认为我理解它然后我没有.

delphi pascal inno-setup pascalscript

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

从动态数组字符串中移动()以插入/删除项目

使用System.Move()从字符串数组中插入/删除项目并不像从其他简单数据类型中插入/删除它那么容易.问题是...字符串是在Delphi中计算的引用.在引用计数数据类型上使用Move()需要更深入的内部编译器行为知识.

有人可以在这里解释为实现这一目标所需的步骤,或者更好地使用一些代码片段,或者指导我在互联网上提供一个很好的参考?

哦,请不要告诉我使用"懒惰但缓慢的方式",也就是说,对于循环,我知道.

delphi pascal

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