如果想做一個局域網遠控程式,控制端用TreeView來顯示服務端磁盤磁區檔案目錄樹,檔案目錄資訊怎么打包傳遞比較好?還有怎么自定義簡單的協議?
uj5u.com熱心網友回復:
服務端:第1步,定義結構,至少應有:id號、目錄名、層級、上級id號,如果在意它在兄弟中的次序,還應加個次序。
第2步,遍歷服務端的目錄,分別定義id號和目錄名,并指定它的所處的目錄層級和上級目錄的id;
第3步,把全部目錄轉成連串資料,比如:目錄id1+分割符+目錄名1+分割符+層級1+上級目錄+目錄id2+........
第4步,發送到控制端。
控制端:
收集連串資料,按格式解碼,用TreeView顯示。
不敢說好,但還可以用。我用來顯示各資產所處位置的,層級包括單位名(第一層,唯一)、分廠名、建筑物、房間、方位。
uj5u.com熱心網友回復:
你倆到底啥關系,撞臉了~~~
uj5u.com熱心網友回復:
可以參考。
uj5u.com熱心網友回復:
他是假李逵~
uj5u.com熱心網友回復:
看我頭像的數字,誰是真品?uj5u.com熱心網友回復:
注冊12年未必一開始就是小青蛙頭像...
uj5u.com熱心網友回復:
用ClientDataSet建立一個記憶體表,把目錄資訊放在表里,之后存為.cds檔案,最后用IdTCPClient和IdTCPServer來傳檔案就行。uj5u.com熱心網友回復:
頭像可以換。。
uj5u.com熱心網友回復:
用ClientDataSet建立一個記憶體表,把目錄資訊放在表里,之后存為.cds檔案,最后用IdTCPClient和IdTCPServer來傳檔案就行。
把目錄資訊放在表里,這個怎么操作?
我希望目錄結構是可以分層獲取、傳送的。
uj5u.com熱心網友回復:
目錄資訊的存放結構當然要自己設計,好像沒現成的。簡單地,你可以用層級 本層名 是否檔案夾 上級目錄全名 四個欄位建一個表,
再用findfirst遍歷檔案下所有檔案,把內容填入上面的表中。當然你如嫌上面的表太大。可再建兩個表,
一個表兩個欄位,上級目錄全名,唯一編號,
另一個表 層級 本層名 是否檔案夾 唯一編號 四個欄位
想法把先前4個欄位的資料裝入這兩個表中,再傳這兩個表就行。當然,要分層獲取,按層級過濾一下表,再把資料裝入一個空表保存后再傳送就行了。
下面是遍歷檔案下所有檔案的方法
#include <iostream>
#include <io.h>
#include <string>
using namespace std;
void dir(string path)
{
long hFile = 0;
struct _finddata_t fileInfo;
string pathName, exdName;
// \\* 代表要遍歷所有的型別
if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) {
return;
}
do
{
//判斷檔案的屬性是檔案夾還是檔案
cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") << endl;
} while (_findnext(hFile, &fileInfo) == 0);
_findclose(hFile);
return;
}
int main()
{
//要遍歷的目錄
string path="E:\\work\\zhidao\\test4";
dir(path);
system("pause");
return 0;
}
轉自百度知道:https://zhidao.baidu.com/question/1798637132504240907.html?qbl=relate_question_0&word=C%2B%2B%B5%C3%B5%BD%CE%C4%BC%FE%BC%D0%CF%C2%CE%C4%BC%FE%CA%FD%C4%BF
uj5u.com熱心網友回復:
目錄資訊的存放結構當然要自己設計,好像沒現成的。簡單地,你可以用
層級 本層名 是否檔案夾 上級目錄全名 四個欄位建一個表,
再用findfirst遍歷檔案下所有檔案,把內容填入上面的表中。當然你如嫌上面的表太大。可再建兩個表,
一個表兩個欄位,上級目錄全名,唯一編號,
另一個表 層級 本層名 是否檔案夾 唯一編號 四個欄位
想法把先前4個欄位的資料裝入這兩個表中,再傳這兩個表就行。當然,要分層獲取,按層級過濾一下表,再把資料裝入一個空表保存后再傳送就行了。
下面是遍歷檔案下所有檔案的方法
#include <iostream>
#include <io.h>
#include <string>
using namespace std;
void dir(string path)
{
long hFile = 0;
struct _finddata_t fileInfo;
string pathName, exdName;
// \\* 代表要遍歷所有的型別
if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) {
return;
}
do
{
//判斷檔案的屬性是檔案夾還是檔案
cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") << endl;
} while (_findnext(hFile, &fileInfo) == 0);
_findclose(hFile);
return;
}
int main()
{
//要遍歷的目錄
string path="E:\\work\\zhidao\\test4";
dir(path);
system("pause");
return 0;
}
轉自百度知道:https://zhidao.baidu.com/question/1798637132504240907.html?qbl=relate_question_0&word=C%2B%2B%B5%C3%B5%BD%CE%C4%BC%FE%BC%D0%CF%C2%CE%C4%BC%FE%CA%FD%C4%BF
存為檔案,再傳送,可以存為記憶體流嗎?
uj5u.com熱心網友回復:
目錄資訊的存放結構當然要自己設計,好像沒現成的。簡單地,你可以用
層級 本層名 是否檔案夾 上級目錄全名 四個欄位建一個表,
再用findfirst遍歷檔案下所有檔案,把內容填入上面的表中。當然你如嫌上面的表太大。可再建兩個表,
一個表兩個欄位,上級目錄全名,唯一編號,
另一個表 層級 本層名 是否檔案夾 唯一編號 四個欄位
想法把先前4個欄位的資料裝入這兩個表中,再傳這兩個表就行。當然,要分層獲取,按層級過濾一下表,再把資料裝入一個空表保存后再傳送就行了。
有空我再琢磨一下。
uj5u.com熱心網友回復:
當然可以存為記憶體流的,ClientDataSet 有SaveToStream函式的。 其實,要遠程直接訪用表,用datasnap也行的,這個封裝了indy組件,的。用第三方的kbmmw也可以。uj5u.com熱心網友回復:
當然可以存為記憶體流的,ClientDataSet 有SaveToStream函式的。 其實,要遠程直接訪用表,用datasnap也行的,這個封裝了indy組件,的。用第三方的kbmmw也可以。
有點復雜了~
uj5u.com熱心網友回復:
不需要那么復雜,最簡單的方法,每個檔案都傳全路徑,由控制端自己創建樹就可以了uj5u.com熱心網友回復:
不需要那么復雜,最簡單的方法,每個檔案都傳全路徑,由控制端自己創建樹就可以了
也是一種辦法。
uj5u.com熱心網友回復:
如果是可視化的,可以傳遞圖片,傳遞滑鼠模似點擊的x、y^_^uj5u.com熱心網友回復:
如果是可視化的,可以傳遞圖片,傳遞滑鼠模似點擊的x、y^_^
這個想法很新穎~
uj5u.com熱心網友回復:
如果是可視化的,可以傳遞圖片,傳遞滑鼠模似點擊的x、y^_^
如果兩機螢屏解析度相差很多就比較麻煩。
uj5u.com熱心網友回復:
傳遞影像不可靠,因為是遠程控制軟體,并非遠程桌面軟體,后者要求必須登錄進服務端,前者并不必須登錄uj5u.com熱心網友回復:
傳遞影像不可靠,因為是遠程控制軟體,并非遠程桌面軟體,后者要求必須登錄進服務端,前者并不必須登錄
也是。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/34077.html
標籤:茶館
上一篇:各位大佬,誰知道C++builder 6.0 開發的桌面程式工程怎么匯入到Rad studio 10.2.3 中,還是不能匯入,需要重新創建工程?
下一篇:c++bulider五子棋問題
