怎样自定义数据文件格式

怎样自定义文件格式?

怎样自定义文件格式,且用自己写的程序才能读写,别人不能直接读写,比如用二进制流就不能读写等 !!!!1问

自己做的程序,其中有自定义的文件格式(.bsp),现在我在注册表里添加.bsp和我自己的程序相关联,可是每次我双击*.bsp文件(比如temp.bsp文件),这时打开了我的程序,可是却不能同时用我的程序打开temp.bsp文件,我应该在我的form1_load()里面加上怎样的代码?谢谢!

回答!!在注册表中应该设置为“你的程序全路径,%1“

2问 我自己写的数据。。该怎么保存到自己定义的一个文件格式的文件中。

用鼠标双击该文件能关联到我自己的程序

答案!关联文件需要修改注册表内容,参考一下方法:

自定义文件关联

在注册表里的HKEY_CLASSES_ROOT里见一个自己的类型。
如新建一个项.dyc 修改其默认键值为dycfiles
然后再新建一个项,再在其下新建一个项(shell),再在其下建项(open),再在其下建项(command),最后把command里的默认键值修改为你的程序。
这样就好了。
在bc里很简单。
#include <Registry.hpp>

TRegistry类里提供了足够的方法来做上面说的事。

下面子程序可以实现文件与程序关联:
//---------------------------------------------------------------------------
bool __stdcall RegFileType(AnsiString Ext, // 扩展名,如: ".dyc "
AnsiString ExtTypeName, // 文件类型,如: "dyc file "
AnsiString AppFileName, // 应用程序名,如 "c://dyc.exe "
AnsiString FileDescription, // 文件类型描述,如: "dyc documents "
int IconIndex) // 图标索引,如0
{
bool RegOK;
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+Ext, " ", ExtTypeName);
if(AppFileName.Pos( " ")> 0) {
AppFileName = "/ " "+AppFileName+ "/ " ";
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName, " ", FileDescription);
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName+ "//DefaultIcon ", " ", AppFileName+ ", "+IntToStr(IconIndex));
}
if(RegOK) {
RegOK = WriteStringToReg(HKEY_CLASSES_ROOT, "// "+ExtTypeName+ "//Shell//打开//command ", " ", AppFileName+ " / "%1/ " ");
}
return RegOK;
}
bool __stdcall WriteStringToReg(HKEY Root, AnsiString Key, AnsiString KeyName, AnsiString KeyValue) {
bool OK = false;
TRegistry *Registry = new TRegistry();
Registry-> RootKey = Root;
if(Registry-> OpenKey(Key, true)) {
try {
Registry-> WriteString(KeyName, KeyValue);
OK = true;
}
catch(...) {
}
}
delete Registry;
return OK;
}


注册表结构:

[HKEY_CLASSES_ROOT/.myfile] <=== 此为加入的文件类型
@= "ft000003 "
------------------------------------------

[HKEY_CLASSES_ROOT/ft000003] <=== 以下关联方式
"EditFlags "=dword:00000000
"BrowserFlags "=dword:00000008
@= " "

[HKEY_CLASSES_ROOT/ft000003/DefaultIcon] <=== 默认图标
@= "shell32.dll,44 "

[HKEY_CLASSES_ROOT/ft000003/shell] <=== 打开方式
@= "open "

[HKEY_CLASSES_ROOT/ft000003/shell/open]

[HKEY_CLASSES_ROOT/ft000003/shell/open/command] <=== 关联程序
@= "F://Exe//Setup//Set.EXE %1 " 

------------------------------------------------------------------------------------------------------------------本文转自百度空间

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将pcd文件按照自定义数据格式写入Apollo的record中,需要以下步骤: 1. 首先,定义自定义数据格式。可以使用Python中的protobuf库定义数据格式,例如: ``` syntax = "proto2"; package my_data; message MyPointCloud { repeated float x = 1; repeated float y = 2; repeated float z = 3; } ``` 这个例子中,我们定义了一个名为MyPointCloud的数据格式,包含三个repeated的float类型的字段x、y和z,在protobuf中,repeated表示这些字段可以重复出现。 2. 接着,将pcd文件读取到Python中,并将点云数据转换为自定义数据格式。可以使用Python中的pcl库读取pcd文件,然后使用protobuf库将点云数据转换为自定义数据格式,例如: ``` import pcl from my_data_pb2 import MyPointCloud cloud = pcl.load("example.pcd") my_point_cloud = MyPointCloud() for point in cloud: my_point_cloud.x.append(point[0]) my_point_cloud.y.append(point[1]) my_point_cloud.z.append(point[2]) ``` 这个例子中,我们使用了定义好的自定义数据格式MyPointCloud,并将读取到的点云数据转换为了该数据格式的实例my_point_cloud。 3. 最后,将自定义数据格式的实例写入Apollo的record中。可以使用Apollo提供的Python API中的相应函数,例如: ``` from cyber.python.cyber_py3 import cyber from cyber.python.record import RecordWriter cyber.init() record_file = "example.record" writer = RecordWriter() writer.open(record_file) writer.write_channel("my_point_cloud_channel", my_point_cloud.SerializeToString()) writer.close() ``` 这样,pcd文件中的点云数据就按照自定义数据格式写入了名为"my_point_cloud_channel"的Apollo record中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值