2013-07-04 47 views
1

我正在创建一个Windows窗体程序。在表格中,我通过文本框插入一些数据,然后将它们写入文件中。一旦我按下注册按钮,我会注册一行,等等。 例子:删除整行,如果有一个字

test1|test2|test3... 

test4|test5|test6... 

在另一种形式我在一个文本框中键入一个单词,如果这个词是我的文件我想删除该行。 例如:单词是test5,所以我将删除它所在的所有行。我得:

test1|test2|test3... 

感谢Medinoc用户此:

WRITE

ref class MyClass 
{ 
public: 
    String^ cognome; 
    String^ nome; 
    int voto_diploma; 
}; 

//... 

List<MyClass^>^ primo = gcnew List<MyClass^>(); 

//... 

MyClass^ myObj = gcnew MyClass(); 
myObj->cognome = textBox1->Text; 
myObj->nome = textBox2->Text; 
myObj->voto_diploma = Convert::ToInt32(textBox35->Text); 
primo->Add(myObj); 

//... 

TextWriter ^tw = gcnew StreamWriter(L"primoAnno.txt", true); 
for each(MyClass^ obj in primo) 
{ 
//You can use any character or string as separator, 
//as long as it's not supposed to appear in the strings. 
//Here, I used pipes. 
tw->Write(obj->cognome); 
tw->Write(L"|"); 
tw->Write(obj->nome); 
tw->Write(L"|"); 
tw->WriteLine(obj->voto_diploma); 
} 
tw->Close(); 

阅读

MyClass^ ParseMyClass(String^ line) 
{ 
array<String^>^ splitString = line->Split(L'|'); 
MyClass^ myObj = gcnew MyClass(); 
myObj->cognome = splitString[0]; 
myObj->nome = splitString[1]; 
myObj->voto_diploma = Convert::ToInt32(splitString[2]); 
return myObj; 
} 

DELETE

TextWriter^ tw = gcnew StreamWriter(L"primoAnno2.txt", true); 
TextReader^ tr = gcnew StreamReader(L"primoAnno.txt"); 
String^ line; 
while((line=tr->ReadLine()) != nullptr) 
{ 
MyClass^ obj = ParseMyClass(line); 
if(obj->cognome != L"cat") 
    tw->WriteLine(line); 
} 
tr->Close(); 
tw->Close(); 
File::Delete(L"primoAnno.txt"); 
File::Move(L"primoAnno2.txt", L"primoAnno.txt"); 

但删除部分无法正常工作。你能帮我解决吗?

+0

究竟是什么问题? “不正常工作”是一个非常模糊的错误描述。 – PeterK

+0

该函数应该写入所有与另一个文件中的“cat”不同,然后覆盖原始文件。问题是该功能删除了所有的内容。顺便说一句,如果(obj-> cognome!= textBox2-> Text)tw-> WriteLine(line);因为我想“保存”永恒希望不同于textbox.thanks – gAeT

回答

0

据我所知,删除功能只检查'cognome',所以如果你试图匹配的单词实际上是'nome',它将不匹配。尝试修改像这样的删除功能:

if(obj->cognome != L"cat" && obj->nome != L"cat") 
    tw->WriteLine(line); 
} 
+0

这个作品!文本从文本框比较怎么样?我试过如果(obj-> cognome!= textBox2-> Text)tw-> WriteLine(line);但没有结果 – gAeT

+0

我犯了一个愚蠢的错误。它工作正常! – gAeT

相关问题