我需要以可struct移植的方式将C序列化为文件,以便我可以在其他机器上读取该文件,并且可以保证我将获得与我放入的相同的内容.
文件格式无关紧要,只要它相当紧凑(如果不是为了便携性问题,写出结构的内存中表示将是理想的.)
有一种干净的方法可以轻松实现这一目标吗?
用户最近在使用我的软件时报告了一个奇怪的错误.我使用DSA签名来验证许可证.当软件导入公钥以验证签名时,DSA提供程序的FromXmlString方法将抛出CryptographicException,其描述为" 密钥无法在指定状态下使用 ".
从System.Security.Cryptography.Utils.CreateProvHandle调用的_OpenCSP方法似乎返回NTE_BAD_KEY_STATE(0x8009000b).这是第一次有人向我报告此错误,并且该代码多年来没有变化.
造成这种情况的可能原因是什么?屏蔽权限错误?CAPI安装破损?被.net信任/权限设置阻止?密钥存储提供商存储的垃圾,还是KSP向cryptoapi返回意外的东西?
我已经搜索了错误代码/说明/等,但没有找到任何真正的答案,可能会导致这个...
失败的代码的隔离版本在这里:http: //forum.huagati.com/getattachment.ashx?fileid = 78
using System;
using System.Security.Cryptography;
using System.Reflection;
public class Test
{
public static void Main()
{
try
{
string key = "<DSAKeyValue><P>wrjxUnfKvH/1s5cbZ48vuhTjflRT5PjOFnr9GeUPZSIoZhYATYtME4JRKrXBtSkyioRNtE1xgghbGAyvAJ5jOWw88fLBF+P1ilsZyq72G1YcbB+co8ImQhAbWKmdCicO9/66Th2MB+7kms/oY3NaCzKEuR7J3b23dGrFpp4ccMM=</P><Q>xmxoSErIJCth91A3dSMjC6yQCu8=</Q><G>bwOLeEaoJHwSiC3i3qk9symlG/9kfzcgrkhRSWHqWhyPAfzqdV1KxJboMpeRoMoFr2+RqqKHgcdbzOypmTeN4QI/qh4nSsl5iEfVerarBOrFuRdOVcJO0d8WE233XQznd1K66nXa5L8d9SNZrM6umZ1YuBjhVsTFdPlIXKfGYhk=</G><Y>wZnEEdMUsF3U3NBQ8ebWHPOp37QRfiBn+7h5runN3YDee1e9bC7JbJf+Uq0eQmU8zDs+avEgD68NpxTKEHGr4nQ3rW6qqacj5SDbwO7nI6eN3wWrVhvrWcQm0tUO93m64HsEJREohfoL+LjqgrqIjZVT4D1KXE+k/iAb6WKAsIA=</Y><J>+zmcCCNm2kn1EXH9T45UcownEe7JH+gl3Lw2lhVzXuX/dYp5sGCA2lK119iQ+m3ogjOuwABATCVFLo6J66DsSlMd0I8WSD5WKPvypQ7QjY0Iv71J2N0FW0ZXpMlk/CE8zq4Z7arM1N564mNe</J><Seed>QDrZrUFowquY5Uay8YtUFOXnv28=</Seed><PgenCounter>Gg==</PgenCounter></DSAKeyValue>";
DSACryptoServiceProvider csp2 = new DSACryptoServiceProvider();
csp2.FromXmlString(key);
Console.WriteLine("Success!");
}
catch (Exception ex)
{
int hResult = 0;
try
{
PropertyInfo pi = typeof(Exception).GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
hResult = (int)pi.GetValue(ex, null);
}
catch (Exception ex2)
{
Console.WriteLine("HResult lookup failed: " + ex2.ToString());
}
Console.WriteLine("Initializing CSP …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一个带有复选框的对话框,"在C#中再次给我看这个对话框".
我用谷歌搜索并搜索了很多,但我找不到一个优雅的解决方案.
该对话框应该与本机MessageBox.Show类似,但是使用新的属性值(bool值)返回给调用者.
谢谢.
这个问题是关于下面列出的最佳解决方法,或者您知道的另一个问题.
这是问题的背景,它来自这样的代码......
Set scriptshell = CreateObject("wscript.shell")
Const TIMEOUT_IN_SECS = 60
Select Case scriptshell.popup("Yes or No? leaving this window for 1 min is the same as clicking Yes.", TIMEOUT_IN_SECS, "popup window", vbYesNo + vbQuestion)
Case vbYes
Call MethodFoo
Case -1
Call MethodFoo
End Select
Run Code Online (Sandbox Code Playgroud)
这是一种显示带有VBA或VB6超时的消息框的简单方法.问题是特别是在Excel 2007中(显然有时也会出现在Internet Explorer中),弹出窗口将意外地不会超时,而是等待用户输入.这个问题很难调试,因为它偶尔会发生,我不知道重现问题的步骤.到目前为止,我认为它是Office模式对话框的一个问题,并且excel不能识别超时已过期.
请看这里...
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/251143a6-e4ea-4359-b821-34877ddf91fb/
我在此处列出了此问题的解决方法.
A.使用Win32 API调用
Declare Function MessageBoxTimeout Lib "user32.dll" Alias "MessageBoxTimeoutA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long, _ …Run Code Online (Sandbox Code Playgroud) 我有一个三部分问题是fgetcsv比str_getcsv更好,有没有办法只允许.csv文件类型显示在文件上传对话框中?最后我应该/我需要使用ini_set('auto_detect_line_endings',true);
<?php
if (isset($_POST['submit'])) {
//$filename=$_POST['filename'];
$filename = file_get_contents($_FILES['uploadedfile']['tmp_name']);
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
$import = "INSERT into kmmb_member1(no_ahli,no_pin,nama,no_ic_baru,no_ic_lama) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";
mysql_query($import) or die(mysql_error());
}
fclose($handle);
print "Import done";
} else {
print "<form action='import.php' method='post'>";
print "Type file name to import:<br />";
// print "<input type='text' name='filename' size='20' /><br />";
print "Select csv file: <input name='uploadedfile' type='file' /><br />";
print "<input type='submit' name='submit' value='submit' /></form>";
}
?>
Run Code Online (Sandbox Code Playgroud) 我正在循环通过EF的ObjectStateEntry,所以我可以访问enrty.Entity,我正在poco类上做一些静态验证,我也想做业务规则验证所以我创建了一个库来做到这一点,现在我有这一行期望类型excample Customer的代码..
MyEntityValidator<needtypehere> ev = new MyEntityValidator<needtyehere>(new EntityValidator());
Run Code Online (Sandbox Code Playgroud)
所以我有问题传递类型,我在'needtypehere'.我尝试了entry.Entity.GetType()但没有工作.这又是该方法的标志
GetErrors(this ObjectStateEntry entry)
Run Code Online (Sandbox Code Playgroud) 在下面的方法中,我不确定为什么释放其中一个数组会导致异常.我能看到的唯一原因是,如果componentsSeparatedByString返回一个自动释放的数组,但我看不出文档中提到它确实存在.
-(void)addRow:(NSString *)stringWithNumbers;
{
NSArray *numbers = [stringWithNumbers componentsSeparatedByString:@" "];
NSMutableArray *row = [[NSMutableArray alloc] initWithCapacity:[numbers count]];
for (NSString *number in numbers) {
Number *n = [[Number alloc] initWithNumber:number];
[row addObject:n];
[n release];
}
[rows addObject:row];
[row release];
// [numbers release]; <-- leads to exception
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以确认阵列是否已自动释放?如果是这样,我怎么知道/为什么我应该知道?
是否可以通过代码检查对象的任何一个实例是否自动释放?
我正在尝试将进程替换用于程序的输入文件,但它无法正常工作.是因为某些程序不允许输入文件的进程替换吗?
以下不起作用:
bash -c "cat meaningless_name"
>sequence1
gattacagattacagattacagattacagattacagattacagattacagattaca
>sequence2
gattacagattacagattacagattacagattacagattacagattacagattaca
bash -c "clustalw -align -infile=<(cat meaningless_name) -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Less verbose output, finishing with:
No sequences in file. No alignment!
Run Code Online (Sandbox Code Playgroud)
但以下控件确实有效:
bash -c "clustalw -align -infile=meaningless_name -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Verbose output, finishing with:
CLUSTAL-Alignment file created [output_alignment.aln]
bash -c "cat <(cat meaningless_name) > meaningless_name2"
diff meaningless_name meaningless_name2
(No output: the two files are the same)
bash -c "clustalw -align -infile=meaningless_name2 -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Verbose output, finishing with:
CLUSTAL-Alignment file created [output_alignment.aln]
Run Code Online (Sandbox Code Playgroud)
这表明进程替换本身有效,但clustalw程序本身不喜欢进程替换 - …
我在temp2.h中声明了一个变量i,它只
extern i; 包含一行上面的行,并创建了另一个文件temp3.c
#include<stdio.h>
#include<temp2.h>
int main ()
{
extern i;
i=6;
printf("The i is %d",i);
}
Run Code Online (Sandbox Code Playgroud)
当我在上面编译时,
cc -I ./ temp3.c 我得到了以下错误
/tmp/ccJcwZyy.o: In function `main':
temp3.c:(.text+0x6): undefined reference to `i'
temp3.c:(.text+0x10): undefined reference to `i'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我在上面的temp3.c中声明了extern,正如我在上面的文章中提到的那样,KR第33页说.我为temp3.c尝试了另一种方法,使用相同的头文件temp2.h
#include<stdio.h>
#include<temp2.h>
int main ()
{
i=6;
printf("The i is %d",i);
}
Run Code Online (Sandbox Code Playgroud)
并编译它 cc -I ./ temp3.c 并得到以下错误
/tmp/ccZZyGsL.o: In function `main':
temp3.c:(.text+0x6): undefined reference to `i'
temp3.c:(.text+0x10): undefined reference to `i'
collect2: ld returned …Run Code Online (Sandbox Code Playgroud) c# ×4
c ×2
.net ×1
autorelease ×1
bash ×1
cryptoapi ×1
cryptography ×1
dialog ×1
dsa ×1
excel ×1
generics ×1
ipc ×1
messagebox ×1
nsstring ×1
objective-c ×1
php ×1
showdialog ×1
string ×1
unix ×1
vba ×1
winapi ×1
wsh ×1