我需要用户的日志文件,以便我可以阅读和分析这些文件.例如某些丢弃区域,用户丢弃文件,然后我可以用javascript读取它?
我使用Angular2 rc5.我有node.js运行背面,但我不需要那里的数据.我只在客户端需要它.
是否有可能只使用前端技术读取和解析文件内容,如angular2和javascript?或者我是否必须将文件上传到服务器并在那里进行分析?
我已经导入了dll.所有其他部分都有效,但导入方法的字符串返回值给出:
***.exe中0x7748EA5F(ntdll.dll)的未处理异常:0xC0000374:堆已损坏(参数:0x774C4270).
它仍然返回字符串,但我担心这会导致其他一些错误,这很难调试.根据我的测试结果,感觉它可以是任何东西,这就是造成这种情况的原因.
这是我的导入代码:
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);
[UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
private delegate String GetStringDelegate(int handle, int index);
private static GetStringDelegate getString { get; set; }
var addressOfGetString = NativeMethods.GetProcAddress(_handle, "GetString");
getString = (GetStringDelegate)Marshal.GetDelegateForFunctionPointer(addressOfGetString, typeof(GetStringDelegate));
Run Code Online (Sandbox Code Playgroud)
用法
getString(Handle, 1);
Run Code Online (Sandbox Code Playgroud)
这有效,但它会导致错误.在调试时,只需按"继续"将允许它处理它并显示结果.结果是对的.
这是在delphi dll中完成的
function GetString(Hnd,Index : Integer) : PChar; stdcall;
begin
Result:=TControl(Hnd).Stack.GetString(Index);
end;
Run Code Online (Sandbox Code Playgroud)
我有相同类型的整数,双精度,bool和dll中的其他所有代码,没有错误.所以我认为它会产生一些溢出或错误的内存分配大小.
注意:如果我创建控制台应用程序,它只是失败,没有中断错误,如果我运行没有调试器的控制台(ctrl + f5),它工作,仍然没有错误.当我从表单应用程序调用它时生成堆错误.
TL; DR; 这段代码有效,但它显示了堆错误,而返回int,bools等工作完美.