Textdateien von Unix nach Dos

Hallo liebe Accessler,

ich habe ein Programm, das Daten von einer *.txt Datei einliest und verarbeitet.(Semikolon getrennt)
Dummerweise wird diese Datei nun als *.csv geliefert, ebenfalls Semikolon getrennt.

Da das Programm sehr komplex ist, will ich lieber die csv in die txt Variante konvertieren, als ein neues Programm zu schreiben.

Hexadezimal kann ich keinen Unterschied zwischen den Dateien feststellen, außer, dass die eine im DOS Format und die andere im UNIX Format geliefert wird.
Die simple Variante Datei umbenennen in *.txt funktioniert nicht.

Wenn ich jedoch mit einem Hexeditor (mein Favorit ist UltraEdit) die csv Datei von UNIX nach DOS konvertiere und dann umbenenne, ist alles bestens.

Lange Vorrede, aber jetzt kommt der Moment, wo der Frosch ins Wasser rennt:

Hat jemand eine Idee, wie ich per Access (ich benutze 97) per VBA dazu bringen kann eine (Text)Datei von UNIX in DOS zu konvertieren.

Vielen Dank für Eure Antworten im Voraus

Peter

Hallo Peter,

leider schreibst du nicht, was du mit der Datei (bzw. deren Inhalt) machen willst… :frowning:

Also ich würde die CSV - Datei einfach in Access importieren und dann im gewünschten Format wieder exportieren. Natürlich geht das auch per VBA.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Function Unix2Dos(OldText As String, NewText As String)
Dim x As String, Endvalue As Integer
Dim StartValue As Integer, OutputTxt As String
Open OldText For Input As #1
Open NewText For Output As #2
Do Until EOF(1)
 Line Input #1, x
 Endvalue = InStr(1, x, Chr(10))
 StartValue = 1
 Do Until Endvalue = 0
 If Endvalue \> 0 Then
 OutputTxt = Mid(x, 1, (Endvalue - 1))
 Print #2, OutputTxt
 StartValue = Endvalue + 1
 x = Mid(x, StartValue)
 Endvalue = InStr(1, x, Chr(10))
 End If
 Loop
Loop
Close #1
Close #2
End Function

Hallo Joey,

habe gerade Deine Antwort gelesen und das sieht sehr gut aus, genau das was ich suchte, dass mir jemand gleich eine fertige Function zur Verfügung stellt, hätte ich nicht gedacht.

Vielen Dank im Voraus, werde es morgen testen mich dann nochmal melden.

Nur zu meinem Verständnis: Offensichtlich benutzt Unix (hexadezimal) einen anderen Zeichencode für den Zeilenumbruch, so lese ich jedenfalls deinen Code, nach dem suchst Du und schreibst dann die Daten neu.
Ich habe die Dateien natürlich auch hexadezimal verglichen (UltraEdit in einer uralten Version 8.x), dort war auf dem Bildschirm kein Unterschied zu erkennen, beim direkten Vergleich schon.
Hast Du oder jemand anderes eine Idee warum?

Vielen Dank nochmals

Peter

Hi,
UE kennt mehr Formate und zeigt das Format nur in der Status-Leiste unten an.

ansonsten: http://de.wikipedia.org/wiki/Zeilenvorschub

Die Funktion wird relativ langsam bei größerern Dateien, da sie praktisch die ganze Datei erst in einen String einliest und dann parst. Ich hatte damals nur kleine Dateien… Ansonsten muß man die Datei blockweise einlesen, macht aber mehr Programmieraufwand :smile:

Wenn es größere Dateien sind kann man eins der diversen Tools vorher nehmen wie http://www.jostjahn.de/software/unix2do.html

Access kann nirgendwo mit Text-Dateien umgehen die mit einem Unix-Zeilenumschub versehen sind. Das sieht man auch in der Funktion. das „Line input“ liest normalerweise nur eine Zeile - in diesem Fall aber die ganze Datei.

HTH
Joey