Posiadam plik file.txt z zapisanymi danymi w formacie (koniec rekordu oznaczony znakami ||):
Imię;Nazwisko;Numer telefonu;Data ostatniego zabiegu;Zabiegi||
Program ma odnaleźć odpowiednie imię i nazwisko w pliku TXT, po czym informacje z pola “Data ostatniego zabiegu” i “Zabiegi” mają zostać wpisane do pliku TXT w odpowiednim miejscu (nie modyfikując imienia i nazwiska) w rekordzie.
textBox1 zawiera Imię, textBox2 zawiera Nazwisko, textBox3 zawiera Zabiegi, dateTimePicker1 zawiera Datę ostatniego zabiegu.
Prosiłbym o napisanie kodu, bo sam rady nie dam.
C++/CLI to nie to samo co C++…
Kod wykonujący się przy kliknięciu przycisku:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
System::String^ str;
System::String^ imie;
char znak;
//str=textBox1->Text;
int i=0;
System::String^ str2;
StreamReader^ din = File::OpenText("file.txt");
do {
str=din->ReadLine();
//szukam imie i nazwisko
while (znak!=';') {
znak=str[i];
imie=imie+znak;
i=i+1;
}
} while ((str = din->ReadLine()) != nullptr);
textBox1->Text=imie; //tymczasowo do odczytu zmiennej imie
}
Zmienna imie pokazuje wartości liczbowe (?), już sam nie wiem o co chodzi…
Dla mnie tworzenie jakiejkolwiek bazy w pliku *.txt mija się z celem. Lepszym pomysłem byłoby połączenie tego z prawdziwą bazą danych z użyciem przykładowo MS SQL Server. Zmieniając temat mnie ostatnio przekonali, że połączenie z .NET ma lepsze zastosowanie w C#
@somekind czyli uważasz, że trzymanie tego typu danych w pliku txt jest najlepszym rozwiązaniem, interesujące…
ja ze swojej strony polecił bym format xml do przechowywania tego typu danych. Dzięki serializacji i deserializacji w łatwy sposób można uzyskać dostęp do danych i możliwości modyfikacji, manipulacji przez aplikację.
Kłócicie się panowie o pietruszkę. Uważam, że spokojnie można to było zacząć od mojej propozycji lub innej tym bardziej, że tworząc jakąkolwiek bazę w połączeniu z programem to chyba nie rozpoczynaliście od relacji n - n?
To, że ciężko u ciebie z czytaniem ze zrozumieniem oraz z myśleniem logicznym, to jeszcze nie znaczy, że możesz mi cokolwiek imputować.
Nie sądzę, aby to pomogło. To tak, jakby chcieć nauczyć kozę latać.
Przede wszystkim, to autor wątku pyta o plik txt, który już posiada, więc pisanie o SQL czy XML jest średnio trafne.
Co do egzystencjalnych problemów niektórych użytkowników - płaski plik, taki jak CSV nie jest wcale złym sposobem na przechowywanie płaskiej, nierelacyjnej struktury dla małych ilości danych. Jego zaletą w porównaniu z XML jest chociażby to, że nie potrzebuje tylu metadanych.
PolishNetwork , po co w ogóle używasz C++/CLI?
A jeśli już używasz, to korzystaj z metod i klas .NET:
// wczytanie wierszy pliku
array^ wiersze = File::ReadAllLines("C:\\file.txt");
// tego będziemy szukać:
String^ imieNazwisko = this->txtImie->Text + ";" + this->txtNazwisko->Text;
// wyszukanie wiersza
for (int i = 0; i < wiersze->Length; i++) {
// jeśli znajdziemy, to zastępujemy i przerywamy
if (wiersze[i]->StartsWith(imieNazwisko)) {
wiersze[i] = imieNazwisko + ";" + this->txtZabieg->Text + ";" + this->dtpData->Value.ToShortDateString() + "||";
break;
}
}
// zapis
File::WriteAllLines("C:\\file.txt", wiersze);
Bardzo Wam dziękuję, a w szczególności za ostatni post, gdyż wiem już w jaki sposób mogę to napisać. Spróbuję to zaimplementować w programie i ogłoszę wyniki naszej wspólnej pracy.
Znam jedynie C++, jestem w trakcie nauki i jeszcze nie uczyłem się wykorzystywania chociażby WinAPI, dlatego zaledwie tyle udało mi się uzyskać.
Ogólnie potrzebuję zrobić program do zarządzania salonem - dodawanie klienta z nr tel, dodawanie do niego zabiegów wraz z datami, wyszukiwanie klientów i przeglądanie ich zabiegów.
Ale Ty nie piszesz w C++ tylko w C++/CLI i nie używasz WinAPI tylko .NET. To są różne języki i różne biblioteki, a robienie tego, co Ty robisz w C++/CLI nie ma najmniejszego sensu. W tym przypadku lepszy byłby C#.