“保存文件”对话框以从数字数组保存txt

我会将我的两个int和float数组分别保存到一个"csv样式&quot。使用TSaveTextFileDialog的txt文件。我试图在C++ Builder中使用Windows VCL应用程序来实现这一点。
这是我的尝试:

\uuu快速调用TForm6::TForm6(t组件*所有者)
:t表格(所有者)
{
saveTxtDlg=新建TSaveTextFileDialog(此对话框);
TStrings*编码=新的TStringList();
编码->添加对象("UTF8",TEncoding::UTF8);
saveTxtDlg->编码->分配(编码);
saveTxtDlg->过滤器=“文本文件(*.txt)|*.txt”;;
}
void\uu fastcall TForm6::Button2Click(TObject*Sender)
{
if(saveTxtDlg->执行(此->句柄))
{
字符串filename=saveTxtDlg->filename+.txt";
int encIndex=saveTxtDlg->编码索引;
TEncoding*enc=动态铸造<TEncoding*>
(saveTxtDlg->编码->对象[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
对于(int i=0;i<5;i++){
std::string s=std::to_string(x[i])+,“+std::to_string(y[i])”;
s、 SaveToFile(文件名,enc);
}
}
}

但是字符串没有“的成员”;SaveToFile"。请问我该怎么解决?先谢谢你

该对话框仅提供用户选择的文件名。您负责实际打开这些文件,并根据需要将数据写入其中

例如,看看像TStringList::SaveToFile()TFile::WriteAllText()/WriteAllines()TStreamWriter::Write()/WriteLine(),等等

试着这样做:

void\uu fastcall TForm6::button2点击(TObject*Sender)
{
if(saveTxtDlg->执行(此->句柄))
{
字符串文件名=saveTxtDlg->文件名;
int encIndex=saveTxtDlg->编码索引;
TEncoding*enc=static_cast<TEncoding*>(saveTxtDlg->Encodings->Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStringList*txt=新的TStringList;
对于(int i=0;i<5;++i){
字符串s=字符串(x[i])+quot;,")+字符串(y[i]);
txt->添加;
}
txt->保存文件(文件名,enc);
删除文本;
}
}

或者:

\include<系统IOUtils.hpp>
void\uu fastcall TForm6::button2单击(TObject*Sender)
{
if(saveTxtDlg->执行(此->句柄))
{
字符串文件名=saveTxtDlg->文件名;
int encIndex=saveTxtDlg->编码索引;
TEncoding*enc=static_cast<TEncoding*>(saveTxtDlg->Encodings->Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStringDynArray txt;
txt.Length=5;
对于(int i=0;i<5;++i){
字符串s=字符串(x[i])+quot;,")+字符串(y[i]);
txt[i]=s;
}
TFile::WriteAllines(文件名、txt、enc);
}
}

或者:

void\uu fastcall TForm6::button2点击(TObject*Sender)
{
if(saveTxtDlg->执行(此->句柄))
{
字符串文件名=saveTxtDlg->文件名;
int encIndex=saveTxtDlg->编码索引;
TEncoding*enc=static_cast<TEncoding*>(saveTxtDlg->Encodings->Objects[encIndex]);
int x[]={1,2,3,4,5};
浮动y[]={10.1,20.5,30.8,40.7,50.2};
TStreamWriter*txt=新的TStreamWriter(文件名,false,enc);
对于(int i=0;i<5;++i){
字符串s=字符串(x[i])+quot;,")+字符串(y[i]);
txt->写入线;
}
txt->刷新();
删除文本;
}
}

发表评论