如果是可视化的,可以传递图片,传递鼠标模似点击的x、y^_^
传递图像不可靠,因为是远程控制软件,并非远程桌面软件,后者要求必须登录进服务端,前者并不必须登录
不需要那么复杂,最简单的方法,每个文件都传全路径,由控制端自己创建树就可以了
当然可以存为内存流的,ClientDataSet 有SaveToStream函数的。 其实,要远程直接访用表,用datasnap也行的,这个封装了indy组件,的。用第三方的kbmmw也可以。
看我头像的数字,谁是真品?
目录信息的存放结构当然要自己设计,好像没现成的。简单地,你可以用 层级 本层名 是否文件夹 上级目录全名 四个字段建一个表, 再用findfirst遍历文件下所有文件,把内容填入上面的表中。当然你如嫌上面的表太大。可再建两个表, 一个表两个字段,上级目录全名,唯一编号, 另一个表 层级 本层名 是否文件夹 唯一编号 四个字段 想法把先前4个字段的数据装入这两个表中,再传这两个表就行。当然,要分层获取,按层级过滤一下表,再把数据装入一个空表保存后再传送就行了。
目录信息的存放结构当然要自己设计,好像没现成的。简单地,你可以用 层级 本层名 是否文件夹 上级目录全名 四个字段建一个表, 再用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
用ClientDataSet建立一个内存表,把目录信息放在表里,之后存为.cds文件,最后用IdTCPClient和IdTCPServer来传文件就行。
[quote=引用 5 楼 青蛙工作室 的回复:] 看我头像的数字,谁是真品?
你俩到底啥关系,撞脸了~~~
服务端: 第1步,定义结构,至少应有:id号、目录名、层级、上级id号,如果在意它在兄弟中的次序,还应加个次序。 第2步,遍历服务端的目录,分别定义id号和目录名,并指定它的所处的目录层级和上级目录的id; 第3步,把全部目录转成连串数据,比如:目录id1+分割符+目录名1+分割符+层级1+上级目录+目录id2+........ 第4步,发送到控制端。 控制端: 收集连串数据,按格式解码,用TreeView显示。 不敢说好,但还可以用。我用来显示各资产所处位置的,层级包括单位名(第一层,唯一)、分厂名、建筑物、房间、方位。
552
社区成员
20,061
社区内容
加载中
试试用AI创作助手写篇文章吧