如果我想声明一个静态编译时 Byte 数组,我可以这样做:
var
bytes :array[0..24] of Byte = (1, 2, 3, .... );
Run Code Online (Sandbox Code Playgroud)
但是,它的类型是 byte 的 array[0..24],而不是System.TArray<System.Byte>,后者通常称为TBytes。
我需要的是 TBytes 类型的东西,但我不想添加初始化部分以某种痛苦的方式保存这些字节值:
var
bytes2:TBytes;
initialization
SetLength(bytes2,24);
bytes2[0] := 1; bytes2[1] := 2; ....
Run Code Online (Sandbox Code Playgroud)
有什么办法可以代替:
var
bytes2:TBytes = (1,2,3, .... );
Run Code Online (Sandbox Code Playgroud)
我还尝试找到一种从 TBytes 快速转换的方法(System.TArray<System.Byte>)和 Byte 的数组[0..24],如下所示:
bytes2 := byte;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我能得到的最接近的是这个暴力代码:
SetLength(bytes2,Length(bytes));
for n := 0 to Length(bytes) do begin
bytes2[n] := bytes[n];
end;
Run Code Online (Sandbox Code Playgroud)
在我看来,两种类型密切相关,编译器可以做得更好一点,允许我从一种类型强制或复制到另一种类型。还有人对各种类型的“Array of X”有同样的感觉吗?知道有什么很酷的方法吗?如果编译器做了一些魔法,它可能会使 Move(...) 函数适用于这种情况,但 Move 实际上会给您带来访问冲突,并且不能与动态数组或通用集合一起使用。
我有一个只包含彩色形状和透明背景的gif图像
我想用我想要的颜色替换形状的颜色(此gif的颜色调色板只有2种颜色:在我的情况下为透明和白色)。
我创建了一个过滤器,将白色正确替换为红色(这是测试)
但是我的方法imageToBufferedImage遇到问题,它删除了透明度并将其替换为黑色(不知道为什么)。
所以到目前为止,我所做的是:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.ImageProducer;
import java.awt.image.RGBImageFilter;
import java.io.File;
import javax.imageio.ImageIO;
public class TestPNG {
public static void main(String[] args) throws Exception {
File in = new File("bg.gif");
BufferedImage source = ImageIO.read(in);
int color = source.getRGB(0, 0);
Image image = makeColorTransparent(source, new Color(color), new Color(255, 0, 0));
BufferedImage transparent = imageToBufferedImage(image);
File out = new File("bg2.gif");
ImageIO.write(transparent, "gif", out);
}
private static BufferedImage imageToBufferedImage(Image …Run Code Online (Sandbox Code Playgroud) 我搜索过,这似乎是一个简单的问题而没有一个简单的答案.
我有a/b/c.py要调用的文件python -m a.b.c.我想获得a.b.c模块级别的值.
USAGE = u'''\
Usage:
python -m %s -h
''' % (what_do_i_put_here,)
Run Code Online (Sandbox Code Playgroud)
因此,当我收到-h选项时,我会显示USAGE而不需要在每个脚本中实际记下实际值.
我真的需要通过inspect才能获得所需的价值吗?
谢谢.
编辑:如上所述,有答案(我已经搜索过),但不是简单的答案.使用inspect,使用traceback或操作__file__,__package__并做一些子串来得到答案.但没有什么比我在模块中有一个类的简单,我可以使用myClass.__module__,我会得到我想要的答案.__name__(不幸的是)使用是无用的,因为它总是如此__main__.
此外,这是在python 2.6中,我不能使用任何其他版本.
我有一个第三方安装程序,我希望我的用户能够下载并运行作为我编写的应用程序的先决条件.安装程序可以采用允许被动安装的参数,用户可以在其中查看进程的进度,但不必与安装进行交互.
以前,我通过在WinRar中创建SFX文件来完成此行为.在WinRAR GUI的选项中,您可以指定在解压缩归档后要启动的文件,以及应用程序的参数.
有没有办法创建SFX文件并使用控制台设置这些自动执行属性?我正在尝试创建一个处理所有这些的批处理文件.
以下是我目前的批处理文件内容:
C:\Progra~1\WinRAR\rar a -m0 installer_archive.rar install_me.exe
C:\Progra~1\WinRAR\rar s installer_archive.rar installer_auto_extractor.exe
Run Code Online (Sandbox Code Playgroud)
在最后一步之后,我应该怎么做才能更新SFX?
我正在构建一个自定义事件系统,如果你有一个如下所示的重复事件:
活动A从2011年3月3日起每4天重复一次
要么
活动B于2011年3月1日星期二每2周重复一次
如何以一种易于查找的方式将其存储在数据库中.如果有大量事件,我不希望出现性能问题,在渲染日历时我必须经历每一个事件.
我有一个可以包含可点击链接的textview.单击其中一个链接时,我想开始一个活动.这样可以正常工作,但也可以单击整个文本视图并启动另一个活动.
这是我目前的解决方案:
TextView tv = (TextView)findViewById(R.id.textview01);
Spannable span = Spannable.Factory.getInstance().newSpannable("test link span");
span.setSpan(new ClickableSpan() {
@Override
public void onClick(View v) {
Log.d("main", "link clicked");
Toast.makeText(Main.this, "link clicked", Toast.LENGTH_SHORT).show();
} }, 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(span);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("main", "textview clicked");
Toast.makeText(Main.this, "textview clicked", Toast.LENGTH_SHORT).show();
}
});
tv.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)
问题是,当我设置一个OnClickListener,每次我点击一个链接第一监听整个的TextView ,然后将一个用于ClickableSpan被调用.
当点击一个链接时,有没有办法防止android为整个textview调用监听器?或者在监听器中决定整个视图,是否单击了链接?
<%= Model.STPData.InitialRateSettingDate.HasValue ? Model.STPData.InitialRateSettingDate.Value.ToString() : "" %>
Run Code Online (Sandbox Code Playgroud)
这显示了日期和时间戳.我尝试只使用该.Date属性,但它没有用.如何删除时间部分并仅将日期显示为字符串?
在测试轨道模型中的getter/setter对时,我发现了一个很好的行为示例,我一直认为它很奇怪且不一致.
在这个例子中,我正在处理class Folder < ActiveRecord::Base.
Folder belongs_to :parent, :class_name => 'Folder'
在getter方法上,如果我使用:
def parent_name
parent.name
end
Run Code Online (Sandbox Code Playgroud)
...要么...
def parent_name
self.parent.name
end
Run Code Online (Sandbox Code Playgroud)
...结果完全一样,我得到了父文件夹的名称.但是,如果我使用getter方法...
def parent_name=(name)
parent = self.class.find_by_name(name)
end
Run Code Online (Sandbox Code Playgroud)
......父母变成零,但如果我用......
def parent_name=(name)
self.parent = self.class.find_by_name(name)
end
Run Code Online (Sandbox Code Playgroud)
......那么它的确有效.
所以,我的问题是,为什么你有时需要声明self.method,为什么你只能使用局部变量?
这似乎需要/使用self的ActiveRecord的不一致,我想明白这一点更好,所以我不觉得我一直在猜测我是否需要自行申报与否.您应该/何时不应该在ActiveRecord模型中使用self?
views.py中的formset创建:
ffact = formset_factory(Form,extra=somenum]))
fset = ffact(prefix='pfix')
Run Code Online (Sandbox Code Playgroud)
views.py中的验证:
ffact = formset_factory(Form,extra=3))
fset = ffact(request.POST)
if fset_is.valid():
blah blah
Run Code Online (Sandbox Code Playgroud)
这导致异常类型:ValidationError at/app/index/Exception Value:[u'ManagementForm数据丢失或被篡改'] django-docs 确实提到了这一点.我不确定如何提供管理数据.我试着像这样,
try:
fset = ffact(request.POST)
except ValidationError:
fset = None
if fset and fset.is_valid():
blah blah
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误.任何想法?谢谢.
我正在运行Ubuntu 9:10,并安装了一个名为M2Crypto的软件包(版本为0.19.1).我需要下载,构建和安装最新版本的M2Crypto软件包(0.20.2).
0.19.1包具有多个位置的文件,包括(/ usr/share/pyshared和/usr/lib/pymodules.python2.6).
如何在安装0.20.2之前从我的系统中完全卸载0.19.1版本?
java ×2
python ×2
.net ×1
activerecord ×1
android ×1
arrays ×1
background ×1
batch-file ×1
calendar ×1
console ×1
datetime ×1
delphi ×1
django ×1
django-forms ×1
formset ×1
gif ×1
packages ×1
png ×1
python-2.6 ×1
ruby ×1
self ×1
sfx ×1
textview ×1
transparent ×1
validation ×1
winrar ×1