小编Tod*_*odd的帖子

Perl6:如何从命令行读取混合参数?

我正在删除帖子,因为我没有就审查/编辑征询我的意见。

raku

9
推荐指数
2
解决办法
159
查看次数

perl6/raku:如何限制变量中允许的值?

Perl6/乐

我想创建一个子程序,只允许将某些值传递给它。并且不传递允许的值将创建检查器错误(perl6 -c)。

我该怎么做呢?

非常感谢,-T

嗨,雷夫,

在我的 WinPopUps 模块中,我使用了“where”方法,因为它可以一目了然地告诉用户允许的值是什么。我喜欢它!这都是关于可维护性的!(顺便说一句,下面是你创造的怪物!)

sub WinPopUp( Str $TitleStr, 
              Str $MessageStr,
              Str $Icons where   * ~~ "Exclamation"             |
                                      "Warning"                 |
                                      "Information"             |
                                      "Asterisk"                |
                                      "Question"                |
                                      "Stop"                    |
                                      "Error"                   |
                                      "Hand",
              Str $Buttons where * ~~ "AbortRetryIgnore"        | 
                                      "CancelTryAgainContinue"  |
                                      "Help"                    |
                                      "Ok"                      |
                                      "OkCancel"                |
                                      "RetryCancel"             |
                                      "YesNo"                   |
                                      "YesNoCancel" ) 
              is export( :WinPopUp ) {
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!-T

让我知道你是否想要整个模块以及在哪里发布它

raku

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

从 Raku/Perl6,如何读取这个注册表项?

视窗

使用 Raku/Perl6,如何使用 NativeCall 读取值

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\"EnableLUA"]

使用 RegQueryValueExW?

https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw

非常感谢,

-T

编辑 12-27-2019 #1:删除错误代码并插入新代码

这就是我得到的程度。

测试运行字符串:K:\Windows\NtUtil>perl6 -I。-e "使用 WinMount :GetLUA; 说 GetLUA();" RegOpenKeyExW RegOpenKeyExW RtnCode 0

RegQueryValueExW
1
2
RegQueryValueExW   RtnCode 87  (87 = ERROR_INVALID_PARAMETER)
lpData pointer 0
lpcbData data length 0

RegCloseKey
RegCloseKey   RtnCode 0

True
Run Code Online (Sandbox Code Playgroud)

WinMount.pm6

# unit module WinMount;
# WinMount.pm6#`{

   Utilities to mount and dismound drive partitions
   Note: LUA must be unset (0x00000000) for mount to function prpoperly 

   raku -I. -c WinMount.pm6

}

use NativeCall;
use …
Run Code Online (Sandbox Code Playgroud)

winapi raku

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

Raku/Perl6:如何使用 NativeCall 编码 NULL

https://docs.perl6.org/language/nativecall

 "As you may have predicted by now, a NULL pointer
 is represented by the type object of the struct type."
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw

 C++
 LSTATUS RegQueryValueExW(
   HKEY    hKey,
   LPCWSTR lpValueName,
   LPDWORD lpReserved,
   LPDWORD lpType,
   LPBYTE  lpData,
   LPDWORD lpcbData
 );

 lpReserved
 This parameter is reserved and must be NULL.
Run Code Online (Sandbox Code Playgroud)

使用“本机”,我如何满足“NULL”要求?

constant WCHAR   := uint16;
constant DWORD   := int32;

sub RegQueryValueExW( DWORD, WCHARS, DWORD, DWORD, DWORD is rw, DWORD is rw ) is native("Kernel32.dll") returns DWORD { * };

$RtnCode = RegQueryValueExW( $Handle, …
Run Code Online (Sandbox Code Playgroud)

nativecall raku

5
推荐指数
2
解决办法
184
查看次数

Raku:如何为 CArray[WCHAR] 赋值?

$ raku -v 这是基于 MoarVM 版本 2019.07.1 构建的 Rakudo 版本 2019.07.1

以下是在 Raku REPL 上完成的。我在这里做错了什么?如何为 CArray[WCHAR] 赋值?

我希望 $lpData[0] 为 0xABCD,$lpData[1] 为 0xEF12。

> use NativeCall;
Nil

> constant WCHAR := uint16;
(uint16)

> my $ValueData = 0xABCDEF12;
2882400018

> my CArray[WCHAR]  $lpData;
(CArray[uint16])

> $lpData[ 0 ] =  ( $ValueData +& 0xFFFF0000 ) +> 0x10;
Type check failed in assignment to $lpData; expected NativeCall::Types::CArray[uint16] but got Array ($[])
  in block <unit> at <unknown file> line 1

> $lpData[ 1 …
Run Code Online (Sandbox Code Playgroud)

nativecall raku

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

Raku NativeCall 到 LibX11 屏幕和显示

软呢帽 33 乐

我正在尝试使用 Raku 的 NativeCall 与 libX11.so 对话以打印出我的屏幕和显示:

use NativeCall;

class Display is repr('CStruct') { has Pointer $.DisplayPtr };

# libX11.so --> X11
sub XOpenDisplay(Str $name = ':0') returns Display is native('X11') { * }
sub XDefaultScreen(Display $) returns int32 is native('X11') { * }

my Display $display = XOpenDisplay()
    or die "Can not open display";
 
my int $screen = XDefaultScreen($display);

print "display = <" ~ $display ~ ">\n";
print "screen =  <" ~ $screen  ~ ">\n";


$ …
Run Code Online (Sandbox Code Playgroud)

nativecall raku

4
推荐指数
2
解决办法
97
查看次数

如何将包含内存地址的“CArray”中的值“分配”给“Pointer”?

这是一个NativeCall问题。

我有 8 个字节(小端)表示CArray内存地址。我如何创建一个Pointer出来呢?

CArrayPointer是 NativeCall 的两种 C 兼容类型。 s 长 8 个字节。事情应该排成一行,但是如何以 NativeCall 可接受的方式Pointer将 a 中的指针地址放入 aCArray中?)Pointer

c pointers nativecall raku

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

“Rat”类型的调用者没有这种方法“AngleCosine”

我正在尝试编写一个测试方法来打印以度数给定的角度的余弦值。

我最终想要的是能够解决以下问题

say 45.AngleCosine;
Run Code Online (Sandbox Code Playgroud)

没有 .new 的东西,比如

say .7.cos;
Run Code Online (Sandbox Code Playgroud)

我如何放弃 .new 的东西?

这是我到目前为止:

   class Angle {
       has Numeric $.degrees;

       method AngleCosine( $debug = False )  {
          my Str     $SubName = &?ROUTINE.name;
          my Numeric $radians = self.degrees * ? / 180;
          my Numeric $cosine  = $radians.cos;

          if $debug  {
             print "$SubName debugging:\n";
             print "   self    = <" ~ self.degrees ~ ">\n";
             print "   radians = <$radians>\n";
             print "   Cosine of " ~ self.degrees ~  " degrees is <" ~ $cosine ~ …
Run Code Online (Sandbox Code Playgroud)

raku

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

Perl6,如何删除字符串中的最后一个字符?

在Perl6中,如何从字符串中删除最后一个字符?

perl6

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

如何在Windows中为Perl6创建弹出窗口?

我正在使用Windows 7和10 rakudo-star-2019.03-x86_64 (JIT)。我想知道如何在Perl6中创建一个弹出窗口来向用户提供信息?类似于Linux的send-notify或Windows Pro msg(无网络连接)

非常感谢,-T

raku

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

Raku Native 调用 gtk-clipboard-request-text?

你会如何用 Raku/Perl6 的 Native Call 调用这个库?

https://developer.gnome.org/gtk3/stable/gtk3-Clipboards.html#gtk-clipboard-request-text

void
gtk_clipboard_request_text (GtkClipboard *clipboard,
                            GtkClipboardTextReceivedFunc callback,
                            gpointer user_data);
Run Code Online (Sandbox Code Playgroud)

非常感谢,-T

编辑:这个问题是如何调用函数。不要对失败的呼叫进行故障排除。此时没有编写代码。

raku

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

哪个 libc 时间给了我一天中的时间?

软呢帽 33 乐

我想用 NativeCall 与 lic.so.6 交谈,以我正在编写的示例为例。我已经找到

但我不知道哪一个会给我一天中的时间 (21:02:03)

挠我的头,

c glibc raku

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

标签 统计

raku ×11

nativecall ×4

c ×2

glibc ×1

perl6 ×1

pointers ×1

winapi ×1