用PINVOKE封裝來讀取txt到本地記憶體

2021-06-29 06:20:04 字數 1561 閱讀 3916

之前的方法在放到伺服器上有諸多的限制,這邊最後使用了乙個c的二維陣列來讀取txt檔案,這個程式可能還有不妥之處,比如行列要指定之類的,先上呼叫的這段c的**封裝,感謝john在這邊付出了很多努力把32位的轉換為64位上再部署到服務中。

//#include "stdafx.h"

#include #include #include #include//#define linenum 174

//#define linesize 428

#define testtime 100

#define _crt_secure_no_deprecate

//#pragma comment( linker, "/subsystem:\"windows\" /entry:\"dllmain\"" )

extern "c"_declspec(dllexport) int readsharedfolderbyjohn(char p[173 * 427]);

void resetloc(int *loc)

int readsharedfolderbyjohn(char p[173 * 427])

for (int i = 1; i < 173; i++)

}/*for (int i=0;i<10;i++)

p[i] = '1';*/

//printf("hello, it's ok");

return 0;

}接下來,這段主要是把二維的緩衝區轉換為一維以便於這邊c#來讀取,因為二維的方法在c#裡真不好操作,之前有朋友貼出在用託管的c++來定義二維陣列傳位址給c封裝動態鏈結庫,但是未果,還是這種方法吧.

[dllimport("optionsplay.sharedfile.dll", entrypoint = "readsharedfolderbyjohn", charset = charset.auto, callingconvention = callingconvention.cdecl)]

//public static extern int readsharedfolderbyjohn(intptr p, int linenum, int linesize);

public static extern int readsharedfolderbyjohn(intptr p);

public static byte getdata(string folder, string filename, int filetypeflag)

copied in ms", filename, stopwatch.elapsedmilliseconds));

return b;

}else

copied in ms", filename, stopwatch.elapsedmilliseconds));

return result;}}

catch (exception ex)

}

最後用marshell列集申請堆疊來獲得這個一維資料。

折騰了乙個月才知道:

用屬性來實現封裝

用屬性來實現封裝 屬性是c 引入的一種語言成分,只有很少的語言支援屬性。通過對屬性的讀和寫來保護類中的域。第一種方法體身也是一種好的方式,但用屬性來實現封裝會更方便。現在我們來看乙個例子 using system public class department set public class de...

用pandas讀取資料夾下所有檔案,如txt

用pandas讀取資料夾下所有檔案 def point table x 讀取資料夾下所有txt檔案,讀取方法是呼叫函式 如point table 2 read path all point table file 要讀取的資料夾的位址 total path glob.glob os.path.join...

用應用封裝來提高移動安全,這合適嗎

聽說有種byod和移動安全的方法,它涉及圍繞各種應用 消費類和企業類 使用應用封裝來部署加密 安全協議和其他措施。應用封裝能否提供足夠的安全性,這種方法比移動裝置管理軟體更好嗎?michael cobb 現在有廣泛的移動裝置管理 mdm 和移動應用管理 mam 產品可供企業選擇,以幫助他們管理其by...