Texdatei einlesen
-
Hallo zusammen! Habe ein Programm zum auslesen gewisser Daten einer Textdatei geschrieben (mit Microsoft Visual C++). Will das Programm jedoch mit Borland zum laufen bringen. Hab jedoch keine Ahnung vom Borland C++ Builder und entsprechend das Programm nicht zum laufen gebracht. Die Daten die nach Betätigung eines Buttons ausgelesen werden, werden in einen String gespeichert und an eine Listbox ausgegeben.
String ^Seriennummer; //Deklaration
String ^Temp;
String ^Fehler_temp;
String ^Zeichen;StreamReader ^lesen=gcnew StreamReader ("c:\Protokoll.txt") //Datei zum einlesen öffenen
Temp=lesen->ReadLine(); //erste Zeile auslesen
Seriennummer=Temp->Substring(12,12);
//Teilstring bilden der Länge 12 ab der 12. Stellewhile { (zeichen!="Ende") //Protokolle haben unteschiedlich viele Zeilen und es soll ein bestimmter Fehler gesucht werden, in der letzten Zeile steht Ende
Temp=lesen->ReadLine(); //Zeile einlesen
Zeichen=Temp->Substring (27,4); //Teilstring bilden
if (zeichen=="over") //Fehler in dieser Zeile vorhanden?
Fehler_temp="Übertemperatur";
}
lesen->Close();
listBox1->Items->Add(Seriennummer+Fehler_temp);Das Programm ist abgespeckt, wäre euch aber Dankbar, wenn jemand dies so schreiben könnte, dass es mit dem C++ Builder funktioniert und ich somit mal einen Ansatz habe. Vielen Dank im voraus, Gruß Tales
-
if (zeichen=="over") //Fehler in dieser Zeile vorhanden?
obendrüber steht noch "Zeichen" statt "zeichen". Bitte benutze Codetags für Code.
greetz KN4CK3R
-
Das Programm musst du nicht umschreiben, sondern komplett neu schreiben, da es unter C++ Builder nicht laufen wird. Oder hat Borland neuerdings einen C++/CLI konformen Compiler? Damit es auf beiden Systemen läuft, musst du von .NET wegkommen und dich mit iostreams oder zumindest WinAPI begnügen
MfG
-
Das Programm soll nur mit Borland laufen...
-
TStringList* list = new TStringList(); list->LoadFromFile("bla.txt"); // Jetzt hast du die Text-Datei im Speicher // und kannst die Methoden von TStringList nutzen delete list;
-
So Ungefähr sollte es gehn
Habe es nochmal überarbeitet so geht es ( Fehler Listindex ) ist beseitigt//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "readtxt.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm3 *Form3; AnsiString workpath=ExtractFilePath(ParamStr(0)); //Gibt den aktuellen Pfad an wo die exe Datei liegt //--------------------------------------------------------------------------- __fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm3::Button1Click(TObject *Sender) { String SerNr; String Fehler_Temp; String tmp; int i=0; TStringList *lesen = new TStringList(); lesen->LoadFromFile(workpath+"protokoll.txt"); //erste Zeile auslesen SerNr=lesen->Strings[0].SubString(12,12); //Teilstring bilden der Länge 12 ab der 12. Stelle ListBox1->Items->Insert(0,"SerNr: "+SerNr); // zugefügt eintragung von Seriennummer //for(i;lesen->Text.Length();i++) //Protokolle haben unteschiedlich viele Zeilen und es soll ein bestimmter Fehler gesucht werden, in der letzten Zeile steht Ende while(!lesen->Strings[i].Pos("End"))//neu While gewählt { i++; //hochzählen von i zur bestimmung der Strings[i] tmp = lesen->Strings[i].SubString(27,4); //Teilstring bilden if(!lesen->Strings[i].Pos("End")) // Prüfen ob DateiEnde EOF mit End erreicht ist { //if (!lesen->Text.Pos("over")) //Fehler in dieser Zeile vorhanden? if (lesen->Strings[i].Pos("over"))// Geändert in String[i] Fehler_Temp="Übertemperatur"; else Fehler_Temp="OK"; // Test ausgabe //ListBox1->Items->Insert(i,"tmp: "+tmp+i+"Error_tmp: "+Fehler_Temp); ListBox1->Items->Add("tmp: "+tmp+i+"Error_tmp: "+Fehler_Temp);//geändert } else ListBox1->Items->Add("EOF ( END )"); // Eintragen wenn das EOF erreicht ist als letzte Zeile } delete lesen; } //---------------------------------------------------------------------------
So viel Spass
Grüße
-
Jungs, ich danke euch. Ihr habt mir super geholfen. Gruß Tale
-
@Tale
Falls du die fertigen C++Builder dateien brauchst sage bescheid schicke dir dann nee mailmusste nur noch kompilieren fertsch ;o)Grüße
-
Ein kleines Problem hätte ich da noch. Es sollen mehrere Textdateien eingelesen werden. Aber sonst klappt alles wunderbar. Grüße
-
Hallo
Ein kleines Problem hätte ich da noch. Es sollen mehrere Textdateien eingelesen werden.
Dann programmier es entsprechend um. Ohne konkrete Frage samt Fehlerbeschreibung keine konkrete Antwort.
bis bald
akari
-
Wie mehrere ?
Alle mit einmal oder einzeln auswählbar ?