我如何在c#中编写日志文件?
目前我有一个带有此语句的计时器,每20秒计时一次:
File.WriteAllText(filePath+"log.txt", log);
Run Code Online (Sandbox Code Playgroud)
对于我想要记录的所有内容,我这样做:
log += "stringToBeLogged";
Run Code Online (Sandbox Code Playgroud)
您可以假设字符串日志随着程序的运行而增长和增长.(我甚至不知道每个字符串是否有最大字符?)
我认为必须有更好的方法来做到这一点.我只是认为每次将某些内容添加到日志中时反复写入整个文件会很重.
我有一个位图我想保存到磁盘,但我只是设法将其保存在与程序exe相同的目录中.
这是我让它工作的唯一方法:
image.save("img.jpg", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
无论程序exe在哪里,我都希望将它保存在磁盘上的其他位置.这些都不起作用,我得到:GDI +中发生了一般性错误.
image.save("C:\\img.jpg", ImageFormat.Jpeg);
image.save(@"C:\\img.jpg", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
编辑:顺便说一下,是否可以制作文件夹?这样的事情?(我总是得到同样的错误..)
image.save("foldername/img.jpg", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
EDIT2:只有当文件夹已经存在时才能保存到文件夹中.可以有许可吗?什么需要进口?
我正在用汇编编写引导加载程序,它似乎在 qemu、bochs 和 virtualbox 上运行良好。但是,它并没有在真实硬件上加载内核(似乎)。
引导加载程序首先将一个字符写入视频内存(用于调试),然后从驱动器读取扇区 2 并远跳转到内核。然后内核将一些字符写入视频内存。
在真机上,我在屏幕上看到引导加载程序中的字符,它挂在那里(闪烁的插入符号)。
我已经尝试将 DS、ES、SI 设置为零,并且我也在设置堆栈段。
我正在使用 bios int 13 function 2 从驱动器读取扇区 2。我有点怀疑它与驱动器编号有关。我都尝试使用在启动时(在 dl 中)传递给引导加载程序的驱动器号,并将其手动设置为 0x0、0x80 和 0x81。
我注意到的一件奇怪的事情是,我用来接近跳转的标签神奇地获得了正确的地址。使用 objdump 我看到例如:jmp 0x2,而使用 gdb 和 qemu,它说:jmp 0x7c02。CS 和所有其他段寄存器为零。无论我在链接中使用 -Ttext 0x0 还是 -Ttext 0x7c00,引导加载程序在所有模拟器上都能正常工作。当我与 -Ttext 0x7c00 链接时,objdump 说 jmp 0x7c02。
编辑,引导加载程序如下所示:
.code16
.text
movw $0xb800, %ax
movw %ax, %ds
movw $0x0741, (0x0)
xorw %ax, %ax
movw %ax, %ds
movw %ax, %si
movw %ax, %es
movw $0x8000, %ax
movw %ax, %ss
movw $0, %sp
movb $2, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试打开一个新的窗体,但它似乎每次都会立即关闭.如果我使用ShowDialog()而不是Show(),它可以工作,但这不是我的意图.
class Forms
{
Main mainForm;
Thread mainThread;
public Forms()
{
}
private void ThreadProc()
{
try
{
mainForm = new Main();
mainForm.Show();
}
catch { }
}
public void startMain()
{
mainThread = new Thread(new ThreadStart(ThreadProc));
mainThread.SetApartmentState(ApartmentState.STA);
mainThread.Start();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一些带有一些位图数据类型的ac程序,我希望用HTTP上传到我的web服务器.所以我想将位图转换为数据类型字节,然后将其作为文本发布到服务器,然后服务器将其保存为图像文件.
我将如何在PHP中执行此操作?
我猜是这样的?但那我将如何指定保存路径位置?
<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>
Run Code Online (Sandbox Code Playgroud) 我有一个带有_start
标签的程序集文件,作为该.text
段中的第一件事.我希望这个标签成为我申请的入口点.
每当我将这个文件与另一个调用了函数的文件一起传递时main
,main
无论如何,该函数最终都成为我的应用程序的入口点.
我正在使用GNU链接器并尝试了-e _start
标志,同时更改了输入文件顺序.只要存在一个main
函数,它就会成为入口点.如果我重命名该main
函数,它工作正常,我的_start
标签成为入口点.
编辑:好像是因为-O2
编译器的标志.
屁股
.text
.global _start
_start:
jmp main
Run Code Online (Sandbox Code Playgroud)
main.c中
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编
gcc -O2 -c as.s -o as.o
gcc -O2 -c main.c -o main.o
ld -e _start as.o main.o -o test
Run Code Online (Sandbox Code Playgroud)
产量
00000000004000b0 <main>:
4000b0: 31 c0 xor %eax,%eax
4000b2: c3 retq
00000000004000b3 <_start>:
4000b3: e9 f8 ff ff ff jmpq 4000b0 <main>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?