Hej! Hej, Hej Hej Hm jo liksom...Unix/Windows översättning
En kund har en fil innehållande siffror och namn på personer. Han
för över den till Windows med ftp. Resultatet blir kort uttryckt
inte bra. Min erfarenhet av Unix är fragmentariskt så är det någon
som har en ide hur jag skall ta hand om denna fil och översätta
till Windows standard vore jag tacksam.
Nedan exempel på utseende:
Nummer Förnamn Efternamn
20070018Ildhel Sldtmmjz 20070019Zhwsc Zfohscz
/BoSv: Unix/Windows översättning
Problemet brukar vara att windows använder CRLF som radbrytare med UNIX använder endbart LF.
Nu var det ett tag sedan jag sysslade med sådant här och jag har inte längre tillgång till någon UNIX-burk. Att prova:
1 - Kör inte ftp i binary mode utan i "vanlig" mode.
2 - fungerar inte ovanstående så prova med att göra en enkel vb-snurra som läser till LF skriver till ny fil + nyrad osv.
/COSv: Unix/Windows översättning
En vb-snurra som tidigare inlägg sa blir inget problem.
>Nummer Förnamn Efternamn
20070018Ildhel Sldtmmjz 20070019Zhwsc Zfohscz
Hur skulle det se ut i Windows ?
Jag skulle vilja se två tre rader till,och du får inta skriva själv
utan ta kopia från tex NotePad på 3 personer,du får ändra
bokstäverna som du vill men inte lägga till något.
Har du skrivit Nummer Förnamn Efternamn
det stämmer nämnligen inte med Unix sätt att skriva.
undrar
SvenSv: Unix/Windows översättning
Roade mig med att knåpa ihop ett förslag till lösning.
Subrutinen utgår från en C:\Unix.txt som ser ut enl nedan.
20070018Sven Persson 20070019Kalle Nilsson 20070015Gunnar Larsson 20070017Stefan Lövgren
Om det skall funka som jag tänkt skall du skippa
rubriktexten ,dvs kopiera unixtexten med början första nummer
ock klistar in i en textfil Unix.txt, En fil UnixToVb.txt kommer att skapas.
Option Explicit
Private Sub Command1_Click()
Dim FileNum As Long, tmpStr As String
Dim UnixArray() As String, i As Long, newUbound As Long
Dim NewArray() As String, n As Long
FileNum = FreeFile
n = 0
Open "C:\Unix.txt" For Input As #FileNum
tmpStr = Input$(LOF(FileNum), FileNum)
Close #FileNum
UnixArray = Split(tmpStr, " ")
For i = 0 To UBound(UnixArray)
If UnixArray(i) <> "" Then newUbound = newUbound + 1
Next 'i
ReDim NewArray(newUbound)
For i = 0 To UBound(UnixArray)
If UnixArray(i) <> "" Then
NewArray(n) = UnixArray(i)
n = n + 1
End If
Next 'i
For i = 0 To UBound(NewArray) Step 2
tmpStr = NewArray(i)
'snygga till nummer och förnamn
For n = 1 To Len(tmpStr)
If Mid$(tmpStr, n, 1) < Chr$(58) Then
NewArray(i) = Left$(tmpStr, n) & Chr$(9) & _
Right$(tmpStr, Len(tmpStr) - n) & Chr$(9) & Chr$(9)
End If
Next 'n
Next 'i
FileNum = FreeFile
Open "C:\UnixToVb.txt" For Output As #FileNum
Print #FileNum, "Nummer" & Chr$(9) & Chr$(9) & "Förnamn" & _
Chr$(9) & Chr$(9) & "Efternamn" & vbCrLf
On Error Resume Next
For i = 0 To newUbound Step 2
Print #FileNum, NewArray(i) & NewArray(i + 1)
Next 'i
Close #FileNum
On Error GoTo 0
End Sub
mvh
SvenSv: Unix/Windows översättning
Kunden ifråga hade den stora vänligheten att upplysa mig om att
namnen var krypterade medan siffrorna inte var det.
Nu försvann myrorna ur huvudet eller hur det var.
Tack för engagemanget.
/Bo