Zeilenumbrüche beim Einlesen von Dateien



  • Hallo zusammen,

    ich habe mehrere hundert Datei in einem Format ".rep", die ich einlesen möchte (lassen sich mit standard-Textleseprogrammen öffnen: Notepad, Wordpad).

    Dabei habe ich jetzt das Problem, dass die Zeilenumbrüche nicht richtig konvertiert werden. Also keine Zeilenumbrüche vorhanden sind (ich arbeite unter Windows).
    Versuche ich jetzt also mit einem C++-Programm und istream::eof()-while-Schleife einzelne Zeilen einzulesen, liefert das Debuggen nur "" für den eingelesenen stream, obwohl die Datei nicht leer ist.

    Muss ich erst die files konvertieren, damit ich sie mit C++ richtig einlesen kann? 😕
    Öffne ich das Dokument einmal mit Wordopad anstatt Notepad und speichere, werden die newlines richtig erkannt. Dann funktioniert auch das Einlesen. Ich wollte nur eigentlich nicht alle Dateien (wie gesagt mehrere hundert) einmal mit Wordpad öffnen und speichern müssen 😞 .
    Kann mir jemand hierbei helfen?

    Gruß
    6H05T



  • Würde es wohl reichen Wordpad anstatt Notepad als Standard-Programm für die rep-Files zu setzen?



  • Unix-Zeilenenden, die von Notepad nicht richtig erkannt werden und im Non-Binary-Mode auch mit C++ Schwierigkeiten machen bei getline und Konsorten?

    Einfach mal man: unix2dos(1) drueberlaufen lassen.



  • nman schrieb:

    Einfach mal man: unix2dos(1) drueberlaufen lassen.

    OK, hatte ich auch schon gefunden, werde dann mal eine windows-version installieren und es ausprobieren. Melde mich dann nochmal, ob es geklappt hat.



  • Notepad hat solche Probleme öfters, der Editor meines Vertrauens unter Windows ist Notepad++ 😃



  • Cyres schrieb:

    Notepad hat solche Probleme öfters, der Editor meines Vertrauens unter Windows ist Notepad++ 😃

    Nur leider hilft der andere Editor beim Einlesen der Datei mittels C++-Programm nicht weiter. Ich kann ja auch Wordpad als Standardprogramm für die rep-files setzen.

    nman schrieb:

    Unix-Zeilenenden, die von Notepad nicht richtig erkannt werden und im Non-Binary-Mode auch mit C++ Schwierigkeiten machen bei getline und Konsorten?

    Einfach mal man: unix2dos(1) drueberlaufen lassen.

    Gibt es irgendwo eine bedienungsfreundliche Version für Windows XP?

    Schonmal vielen Dank für die Antworten 🙂



  • Meine Idee wäre z.B. ein eigenes kurzes Programm zu schreiben, das die Dateien mit z.B. Wordpad öffnet, speichert und wieder schließt.

    Hat jemand hierzu eine Idee:
    Meine erste wäre gewesen die Dateien mit ShellExecute zu öffnen, aber dann ...
    Kann ich das geöffnete Fenster dann noch kontrollieren?

    Alternativ könnte man eine Art unix2dos selber programmieren: In die umgekehrte Richtung wird das für VS-Dateien hier http://support.microsoft.com/kb/268901/de vorgemacht. Bzw. eine konkrete Lösung findet man hier http://www.efgh.com/software/unix2dos.htm.

    Weiter wäre noch eine Kombination möglich: Mit ShellExecute das obige unix2dos.exe aufrufen mit allen Eingabedateien.
    Problem hierbei ist (wie grundsätzlich in der Anwendung auf meine report-files):
    Ich habe in etwa folgende Datei

    RELATIVE	PART	LOTSTARTS	LOTCOMPS	CYCLEAVG	XTHEORAVG	NETONTIME	ONTIME%	WIPLOTAVG
    ~Report time: 04/18/2001 00:00:00 : 								
    Y	rwk_1	0	0					0.00
    Y	part_1	199	15	80:32:14	2.02	4191:56:31	100.00	137.33
    Y	part_2	150	16	109:48:21	2.09	4003:06:30	100.00	125.31
    ~Report time: 04/25/2001 00:00:00 : 								
    Y	rwk_1	0	0					0.00
    Y	part_1	199	25	136:28:51	2.12	5587:58:52	100.00	157.23
    Y	part_2	172	43	199:56:00	2.26	6882:52:11	100.00	129.52
    ~Report time: 05/02/2001 00:00:00 : 								
    Y	rwk_1	0	0					0.00
    Y	part_1	201	63	327:28:27	2.66	2049:07:18	39.68	159.41
    Y	part_2	209	61	261:44:28	2.45	5993:47:40	80.33	133.11
    ~Report time: 05/09/2001 00:00:00 : 								
    Y	rwk_1	0	0					0.00
    Y	part_1	209	126	452:44:49	2.59	-11686:07:41	19.84	148.57
    Y	part_2	241	87	353:49:17	2.60	537:32:27	56.32	137.45
    ~Report time: 05/16/2001 00:00:00 : 								
    Y	rwk_1	0	0					0.00
    Y	part_1	246	155	497:19:12	2.66	-21284:36:41	16.13	137.20
    Y	part_2	261	95	389:19:36	2.67	-2786:01:34	51.58	142.37
    

    usw., diese wird aber wie folgt angezeigt

    RELATIVE	PART	LOTSTARTS	LOTCOMPS	CYCLEAVG	XTHEORAVG	NETONTIME	ONTIME%	WIPLOTAVG~Report time: 04/18/2001 00:00:00 : 							Y	rwk_1	0	0					0.00Y	part_1	199	15	80:32:14	2.02	4191:56:31	100.00	137.33Y	part_2	150	16	109:48:21	2.09	4003:06:30	100.00	125.31~Report time: 04/25/2001 00:00:00 : 							Y	rwk_1	0	0					0.00Y	part_1	199	25	136:28:51	2.12	5587:58:52	100.00	157.23Y	part_2	172	43	199:56:00	2.26	6882:52:11	100.00	129.52~Report time: 05/02/2001 00:00:00 : 							Y	rwk_1	0	0					0.00Y	part_1	201	63	327:28:27	2.66	2049:07:18	39.68	159.41Y	part_2	209	61	261:44:28	2.45	5993:47:40	80.33	133.11~Report time: 05/09/2001 00:00:00 :								Y	rwk_1	0	0					0.00Y	part_1	209	126	452:44:49	2.59	-11686:07:41	19.84	148.57Y	part_2	241	87	353:49:17	2.60	537:32:27	56.32	137.45~Report time: 05/16/2001 00:00:00 : 							Y	rwk_1	0	0					0.00Y	part_1	246	155	497:19:12	2.66	-21284:36:41	16.13	137.20Y	part_2	261	95	389:19:36	2.67	-2786:01:34	51.58	142.37
    

    usw.. Wende ich jetzt unix2dos an, erhalte ich:

    RELATIVE	PART	LOTSTARTS	LOTCOMPS	CYCLEAVG	XTHEORAVG	NETONTIME	ONTIME%	WIPLOTAVG਍縀刀攀瀀漀爀琀 琀椀洀攀㨀  㐀⼀㄀㠀⼀㈀  ㄀   㨀  㨀   㨀 ऀऀऀऀऀऀऀऀഀ
    Y	rwk_1	0	0					0.00਍夀ऀ瀀愀爀琀开㄀ऀ㄀㤀㤀ऀ㄀㔀ऀ㠀 㨀㌀㈀㨀㄀㐀ऀ㈀⸀ ㈀ऀ㐀㄀㤀㄀㨀㔀㘀㨀㌀㄀ऀ㄀  ⸀  ऀ㄀㌀㜀⸀㌀㌀ഀ
    Y	part_2	150	16	109:48:21	2.09	4003:06:30	100.00	125.31਍縀刀攀瀀漀爀琀 琀椀洀攀㨀  㐀⼀㈀㔀⼀㈀  ㄀   㨀  㨀   㨀 ऀऀऀऀऀऀऀऀഀ
    Y	rwk_1	0	0					0.00਍夀ऀ瀀愀爀琀开㄀ऀ㄀㤀㤀ऀ㈀㔀ऀ㄀㌀㘀㨀㈀㠀㨀㔀㄀ऀ㈀⸀㄀㈀ऀ㔀㔀㠀㜀㨀㔀㠀㨀㔀㈀ऀ㄀  ⸀  ऀ㄀㔀㜀⸀㈀㌀ഀ
    Y	part_2	172	43	199:56:00	2.26	6882:52:11	100.00	129.52਍縀刀攀瀀漀爀琀 琀椀洀攀㨀  㔀⼀ ㈀⼀㈀  ㄀   㨀  㨀   㨀 ऀऀऀऀऀऀऀऀഀ
    

    😞
    Vertue ich mich damit, dass die report-Datei im "unix-Format" ist? 😕


Anmelden zum Antworten