小编ard*_*new的帖子

Perl:对字符串中的字符进行排序

我有两个字符串,我想测试它们是否是彼此的字谜.

为了测试字符串A是否是字符串B的字谜,A和B的字符都被排序.如果生成的排序字符串完全匹配,则字符串A和字符串B是彼此的字谜.

split将字符串放入字符数组中,使用Perl的sort例程,join将字符重新组合在一起,并使用以下方法测试字符串相等性eq:

sub anagram
{
  my ($s1, $s2) = @_;

  return (join '', sort { $a cmp $b } split(//, $s1)) eq
         (join '', sort { $a cmp $b } split(//, $s2));
}
Run Code Online (Sandbox Code Playgroud)

有没有办法避免必须在标量和数组类型之间进行转换(依赖joinsplit)?如果是这样,哪种方法更有效?

arrays sorting string perl

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

如何在单个表单上创建多个单选按钮组?

使用VCL,我们有一个TRadioGroup类,Items你可以在设计时修改一个属性.使用Firemonkey,我们只有这个TRadioButton类.

从我的理解,如果添加类型的对象TRadioButton为儿童到其他容器对象(例如TPanel,TGroupBox),这些容器将有效像的VCL TRadioGroup对象.

但是,这些单独的单选按钮似乎表现得好像它们都是同一父母的孩子.如果在组A中选择单选按钮,然后在组B中选择单选按钮,则取消选择组A中的单选按钮.

如何在一个容器对象中获取单选按钮以不取消选择其他容器对象中的单选按钮?

这是我的表单设计的一个例子: 在此输入图像描述

delphi radio-group radio-button delphi-xe2 firemonkey

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

Ada针对iOS目标的交叉编译器

tl; dr
如何将Ada源代码编译为适合运行iOS链接的iPad目标上的应用程序的静态库文件?(GCC不是必需的.也欢迎使用LLVM或其他解决方案!)


我有一个大型的便携式Ada代码库,我想在iPad/iOS项目中使用它.我的主机操作系统是Mac OS X 10.9(在/opt/localMacPorts上运行GCC 4.8.1 ).为此,我正在尝试使用Ada支持构建GCC ARM交叉编译器.

我能够构建一个可以创建ARM可执行文件的工作GCC和GNAT,但我似乎无法构建或安装Ada标准库,这是构建我的Ada代码所必需的.

我正在使用的源包:

gcc-4.8.1
binutils-2.24
libiconv-1.14
gmp-5.1.3
mpc-1.0.2
mpfr-3.1.2
Run Code Online (Sandbox Code Playgroud)

GCC构建配置:

$ bin/arm-none-eabi-gcc -v --version
Using built-in specs.
COLLECT_GCC=bin/arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/Users/ardnew/cross/libexec/gcc/arm-none-eabi/4.8.1/lto-wrapper
arm-none-eabi-gcc (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Target: arm-none-eabi
Configured with: /Users/ardnew/cross/src/gcc-4.8.1/configure --target=arm-none-eabi --prefix=/Users/ardnew/cross --with-cpu=cortex-a8 --enable-languages=c,ada --disable-multilib --enable-interwork --disable-threads --disable-shared --disable-nls --disable-lto --disable-libssp …
Run Code Online (Sandbox Code Playgroud)

gcc arm ada llvm ios

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

其尺寸大于屏幕尺寸的表单的屏幕截图

我有一个TForm对象,其高度大于我的屏幕所需的垂直分辨率.

出于某种原因,Windows不允许表单的可见(客户端?)区域超出屏幕分辨率,因此垂直滚动条出现在我的表单上.

我如何获得TBitmap图像或整个表单的屏幕截图(没有滚动条,所有表单组件都可见),以便表单的所有内容都可见?

windows delphi screenshot tform delphi-2010

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

如何为RAD Studio的工具组件创建选项卡式视图

TL;博士

如何将RAD Studio工具窗口分组到单个选项卡式容器中?


振作起来.传入大量不重要的细节.

背景

在较新的RAD Studio IDE(特别是版本2010,XE2和XE3)中,您可以在内置文本编辑器和表单设计器周围安排视图,并且所有视图都可以停靠在同一个应用程序窗口中(相反)到Delphi 7的浮动视图和工具窗口.

我不确定他们叫什么(谷歌搜索后,我现在确定他们不被称为"观点"),所以请让我通过例子来定义:

  • 专案经理
  • 结构体
  • 工具调色板
  • 对象检查器
  • 事件簿
  • 断点列表
  • 调用堆栈

通过拖放,我可以在IDE周围添加,删除和重新定位这些视图,以及在我选择的任何地方停靠,取消停靠,固定和取消固定视图.

一些视图停靠在选项卡视图的容器组中,而其他视图则自行停靠.由此产生的视图排列称为"桌面".

如何创建我自己的选项卡组视图与自己停靠的视图组?

截图

我创造了一个令人难以置信的,令人兴奋的图表,以直观地展示我的意思.

用于选项卡式和未选中的IDE视图的停靠布局

右侧的屏幕截图显示了如何在一组选项卡中收集各个视图(橙色).当用户选择其中一个选项卡时,容器内容(红色)将替换为所选视图.

我想将视图容器(蓝色和紫色)​​合并到一个新的单个容器中.生成的选项卡(绿色)的行为类似于橙色的选项卡,但它们将位于自己的新容器中.

ide delphi delphi-2010

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

创建一个包含每个成员的集合

有没有办法在编译时(或运行时的常量时间)创建一个具有序数类型成员的集合,T其中包含每个命名T

换句话说,我怎么能补充特定类型的空集?

type 
  TEnum = 
  ( 
    eA = 1,
    eB = 5,
    eC = 34 
  );
  TSet = set of TEnum;

const
  CSet: TSet = ~[]; // with ~ being my fictional set complement operator
Run Code Online (Sandbox Code Playgroud)

那么CSet应该只包含命名的eA,eBeC.

当然这不是一个实际的问题,我只是好奇


编辑

当使用显式的非连续值声明时,我没有意识到枚举类型的行为.枚举仍包含未命名的成员以填补空白.更新的问题仅适用于指定成员

delphi

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

无法在 Xcode 调试器中按名称解析枚举值

在整个项目中使用的全局头文件中使用枚举 typedef,我无法在 Xcode 中使用 lldb 时按名称引用各个枚举值。

例如,如果我在枚举类型可用的任何断点处停止,并且我尝试在 Xcode 的 lldb 提示符处评估某些内容(例如(lldb) p (int)EnumConstant),lldb 会抱怨:

error: use of undeclared identifier 'EnumConstant'
Run Code Online (Sandbox Code Playgroud)

此外,如果我尝试使用条件中的枚举常量设置条件断点(例如,在 Xcode 中右键单击断点 > 编辑断点... > 条件EnumConstant == someLocalVar:),那么每次尝试在该断点处评估该条件时 Xcode 都会抱怨:

Stopped due to an error evaluating condition of breakpoint 1.1: "EnumConstant == someLocalVar"
Couldn't parse conditional expression:
error: use of undeclared identifier 'EnumConstant'
Run Code Online (Sandbox Code Playgroud)

当我开始在“编辑断点...”窗口中键入名称时,Xcode 的代码完成弹出窗口甚至解决了对枚举常量的建议,因此 Xcode 本身在解决它时没有问题。

是否有可以在 lldb 或 Xcode 中设置的选项,以便 lldb编译维护枚举标识符?我假设枚举常量在编译期间被转换为它们的序数值,导致可执行文件丢弃标识符,但这只是我天真的推测。

当我在 Linux 或 Cygwin 的简单 GNU C 程序中使用等效代码(显然减去类定义),但使用 …

xcode enums objective-c ios lldb

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

打开文件对话框按文件内容过滤

我通常使用TOpenDialogFilter属性来缩小用户的可用文件.我想进一步按内容过滤这些文件.

例如,打开文件对话框应仅显示带有".bin"文件扩展名的文件,其前4个魔术字节为0x7F,0x45,0x4C,0x46(ELF可执行文件).

条件并不总是必须识别某些可执行格式,而是其他二进制数据.

有没有在Delphi/VCL中执行此操作的标准方法,还是我必须推迟内容检查,直到用户选择文件为止?

delphi vcl

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

如何调用在另一个包中声明的子例程,而不在子例程名称前加上其包名?

我不完全确定这是可能的,但我想通过省略包名简单地缩短我在另一个包中声明的子例程的名称.

例如,我定义了一个模块:

package Package1;

use strict;
use warnings;

BEGIN 
{
  require Exporter;
  our @ISA = qw( Exporter );
  our @EXPORT_OK = qw( subroutine1 );
}

sub subroutine1
{
  print "Hello!$/";
}

return 1;
Run Code Online (Sandbox Code Playgroud)

我有一个驱动程序应用程序定义:

use strict;
use warnings;

use Package1;

&Package1::subroutine1;
Run Code Online (Sandbox Code Playgroud)

我似乎可以缩短调用的唯一方法subroutine1是创建如下的别名:

*s1 = \&Package1::subroutine1;
&s1;
Run Code Online (Sandbox Code Playgroud)

当然,我是一个doofus,并在这里遗漏了一些东西..有没有更清洁的方法来实现这一目标?

perl namespaces package subroutine

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

在Bash PS1提示符中动态更改主机名

我有一个bash提示符,包含我的主机名使用\h变量(解释PS1)或$(uname -n).无论我使用哪一个似乎没有什么区别.

对于软件许可证的原因,有时我不得不改变我的主机名,这是通过调用脚本,更新文件来完成/etc/hosts/etc/hostname,并呼吁$ hostname NEWNAME良好的措施.

当脚本更新我的主机名时,我希望调用脚本的shell有PS1提示反映更改 - 显示新的主机名.我知道这样做的唯一方法是通过资源我的.bashrc定义PS1.但是. "${HOME}/.bashrc"根据我的理解,在脚本中调用只会修改脚本的环境而不是调用者的环境.

那么如何才能PS1更新调用者的提示符以自动显示新的主机名?

bash shell subshell

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

Delphi:未定义的记录变量

我已经定义了一个TCGTable具有以下结构的记录类型:

type
  TCGTable = record
    x : array [1 .. MAX_POINTS] of Single;
    y : array [1 .. MAX_POINTS] of Single;
  end;
Run Code Online (Sandbox Code Playgroud)

我已经声明了一个TCGTable变量CGTable.

如果该记录满足多个运行时条件,则为变量CGTable分配特定的常量TCGTable记录值.

如果没有常数TCGTable记录符合这些条件,则CGTable应该是未定义的.

是否有我可以指定的Delphi 2010内置值CGTable来表明它是未定义的?我一直在使用的值尝试nilnull,但是这两个似乎是只为指针或变异类型有效.源将不会编译分配给这些值CGTable.

我想检查变量CGTable以确定其有效性,而不是,例如,维护一些额外的布尔有效性标志.

我能确定的唯一解决方法是:

a)将类型更改CGTableTCGTable指针(CGTable : ^TCGTable;),然后允许我CGTablenil值进行比较.

b)定义一些常量TCGTable记录作为"无效"记录.然后我将CGTable与这个"无效"记录进行比较.

有关如何处理此问题的任何建议?谢谢

delphi null record

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

Delphi 库例程 IsUNCRooted 和 IsUNCPath 有什么区别?

这两个函数的当前文档读起来非常相似:

两者都是同一个类的静态成员,其中之一被装饰inline,所以我不认为它们是具有相同功能的独立实现,您经常在各种Delphi类中找到它们(尽管公共类中的示例确实存在于Embarcadero的标准库中)。

具体来说,我无法想到路径是有效 UNC 路径但不是UNC 路径的情况。那么IsUNCRooted甚至是什么意思呢?

windows delphi unc filepath

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