我看到很多关于使用C#生成PDF文件的问题和答案.
我有一个相关但不同的任务.
我已经创建了大量的PDF文件,我想用正则表达式(RegExs)验证内容的某些部分.我想用C#打开PDF,并能够以接近线性的方式读出文本.
如果页眉,页脚,任何侧边栏等被跳过或读取顺序,则无关紧要.我只是追求尽可能多的主体文本.
你能指出我的工具,库,API等,这将使我能够以编程方式阅读PDF文件中的文本吗?
我正在循环一系列字符串,例如(1/12/1992苹果卡车12/10/10橙色自行车).数组的长度总是可以被3整除.我需要循环遍历数组并抓住前3个项目(我要将它们插入到数据库中),然后抓住接下来的3个,依此类推,直到所有他们已经走了.
//iterate the array
for (int i = 0; i < theData.Length; i++)
{
//grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
}
Run Code Online (Sandbox Code Playgroud) 我经常使用众所周知的语法在bash中编写for循环:
for i in {1..10} [...]
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试编写一个顶部由变量定义的地方:
TOP=10
for i in {1..$TOP} [...]
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的parens,花括号,评估等,并且通常会收到错误的"错误替换".
如何编写for-loop以使限制取决于变量而不是硬编码值?
这是不可否认的:多核计算机就在这里.
这就是:高效的多核编程非常困难.这不仅仅是了解pthreads的情况.
这是有争议的:"街头开发者"需要关注他/她自己的这些发展.
您在多大程度上担心必须扩展多核技能?您正在编写的软件是并行化的候选者,如果是,您是否正在做任何教育自己的事情(如果您还不知道这些技术)?或者您是否相信操作系统会处理大部分操作系统,语言运行时会做到这一点,您的应用程序将很乐意坐在一个核心上并让其他人做他们的事情?
虽然听起来荒谬.....
我想要一个Constant,每次使用它时它会增加1
int x;
int y;
x = INCREMENTING_CONSTANT;
y = INCREMENTING_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
其中x == 1; 和y == 2
注意我不希望y = INCREMENTING_CONSTANT + 1类型的解决方案.
基本上我想用它作为编译时唯一ID(通常它不会在代码中使用,例如在另一个宏中)
.LIB在MS Visual Studio 10中使用调试信息构建静态库()时,.PDB始终会命名vc100.pdb.
(而不是构建一个.DLL调试信息的地方[MyProjectName].pdb)
这对我来说是一个问题,因为我正在尝试将几个不同的库(及其调试符号)复制到一个目录中"PublishedLibraries",但所有vc100.pdb名称显然都会发生冲突.
我确信我可以更改每个的名称.PDB以匹配它.LIB,但对我来说更大的问题是为什么 Visual Studio认为vc100.pdb比一个更好的名字projectA.pdb?
如果所有名称冲突,我们如何使用多个库中的Debug Info?
我正在寻找一种可以用来评估数学表达式的算法.我已经看到了几个关于SO的问题,但是答案是C#/ Delphi或python特有的.我需要用C编写算法:)
我试图解决的问题是给用户输入,如
3*(2*x + 1)/x
Run Code Online (Sandbox Code Playgroud)
我可以评估任何x值的表达式.
有什么算法可以做到这一点?如果您想建议一个已经这样做的库,那么我更喜欢C库
谢谢
我有一个看起来像这样的WPF StackPanel :(删除了一些无关紧要的属性)
<StackPanel HorizontalAlignment="Center" Name="PICStack">
<Label Name="PICName" MouseDoubleClick="PICName_MouseDoubleClick" />
<TextBox Name="PICData" Width="120" Visibility="Hidden" />
<Label Name="PICWeight" />
<Label Name="PICARM" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
请注意,TextBox以"隐藏"开头.
当我双击顶部标签时,我交换了可见性:
private void PICName_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
this.PICData.Visibility = Visibility.Visible;
this.PICName.Visibility = Visibility.Hidden;
}
Run Code Online (Sandbox Code Playgroud)
目的是隐藏标签,并使TextBox显示在其位置.
但是,因为它是StackPanel,所以TextBox占用垂直空间,即使它不可见.然后,当文本框显示时,它上面有空白区域,标签以前是可见的.
有没有一种好方法可以让这两个项目基本上直接相互叠加?那么双击Label会突然变成TextBox吗?
Microsoft的事件教程显示了如何在触发之前检查eventfor null:
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
{ // Potential Race-condition at this point!
Changed(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
但这会留下一个竞争条件,正如Eric Lippert的博客中所详述的那样,他写道应该通过本地事件触发事件以避免竞争条件:
protected virtual void OnChanged(EventArgs e)
{
ChangedEventHandler temp = Changed; // Local copy of the EventHandler
if (temp != null)
{ // Race condition avoided by local variable.
temp(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这很有效,但它让许多错误的开发人员感到困惑,并且不会把它放在本地范围的事件中.
来自DailyCoding的另一个解决方案是始终将事件初始化为具有一个空处理程序,因此永远不需要进行空检查:
// Set with empty delegate, will never be null
public event ChangedEventHandler Changed …Run Code Online (Sandbox Code Playgroud) 有人可以向我解释为什么我对字符串大小为6的malloc的调用返回4字节的sizeof?事实上,我给malloc的任何整数参数我得到sizeof为4.接下来,我试图复制两个字符串.为什么我复制的字符串输出(NULL)?以下是我的代码:
int main()
{
char * str = "string";
char * copy = malloc(sizeof(str) + 1);
printf("bytes allocated for copy: %d\n", sizeof(copy));
while(*str != '\0'){
*copy = *str;
str++;
copy++;
}
copy = '\0';
printf("%s\n", copy);
}
Run Code Online (Sandbox Code Playgroud)