Domino 9 und frühere Versionen > ND8: Entwicklung
Problem mit Line Input
jo@chim:
@pram:
Per stream.Open / stream.readtext() gibt es denselben Effekt.
Das "Leerzeichen" wird im Hex-Editor als 00 angezeigt. Wenn ich die Datei im Notepad speichere, wird dieses Zeichen in 20 umgewandelt - dann funktioniert der Import.
@BigWim:
Welche Codepage muss ich denn auswählen?
pram:
Also ein nullterminierter String. Damit kommt readText scheinbar auch nicht klar.
Du könntest Notessteam.read versuchen. Dieser liefert dir aber ein Byte-Array
m3:
Oh. Schön! "00" ist in vielen Sprachen/Systemen, die auf C basieren, der "End of String" Character.
Da hilft
a) dem Messgerät beibringen, kein "00" zu schreiben
b) das File im Binary Mode öffnen und "00" durch " " ersetzen
c) über einen NotesStream Byteweise lesen und "00" durch " " ersetzen
BigWim:
--- Zitat ---Welche Codepage muss ich denn auswählen?
--- Ende Zitat ---
Ich hätte es erst einmal ohne eine Angabe probiert, also nur mit Type.
Der Verweis auf die Codepage war als Hinweis gedacht, vielleicht gibt es ja da etwas spezielles. Denn ich gehe mal davon aus, dass "wir" nicht die ersten sind, die auf dieses Problem stoßen ;-)
Vielleicht hilft ja das weiter.
http://www.uwe-sieber.de/codepage.html
http://en.wikipedia.org/wiki/Code_page
Markus
jo@chim:
... gibt's zwei Übersetzungen in meinem Fall - "Read The Fine Martin" + "Read The Fuckin Manual" ;)
Martin hat den Lösungshinweis und die Designer-Hilfe unter "Examples: Read method " die Vorgehensweise geliefert:
Ich öffne die Ursprungsdatei binär als Stream und schreibe sie neu als temporäre Datei ohne die Nullstrings, die ich per Open ... As... zeilenweise auslesen kann. Das sieht dann so aus:
--- Code: ---Dim ws As New NotesUIWorkspace
Dim inPath As String, outPath As String
Dim session As New NotesSession
Dim inStream As NotesStream, outStream As NotesStream
Dim inBuff As Variant, outBuff() As Byte
FilePath = ws.OpenFileDialog(False ,"Messwerte importieren" , "Messdatei|*.p2|")
If Not(Isempty(FilePath)) Then
inPath = FilePath(0)
Else
Exit Sub
End If
outPath=Environ("temp")+"mw.tmp"
Set inStream = session.CreateStream
If Not inStream.Open(inPath, "binary") Then
Messagebox inPath,, "Open failed"
Exit Sub
End If
Set outStream = session.CreateStream
If Not outStream.Open(outPath, "binary") Then
Messagebox outPath,, "Open failed"
Exit Sub
End If
prevChar = True
Do
inBuff = inStream.Read(32767)
counter% = 0
Forall b In inBuff
If (b >0) Then
If Not prevChar Then
Redim Preserve outBuff(0 To counter%)
outBuff(counter%) = 32
counter% = counter% + 1
prevChar = True
End If
Redim Preserve outBuff(0 To counter%)
outBuff(counter%) = b
counter% = counter% + 1
Else
prevChar = False
End If
End Forall
Call outStream.Write(outBuff)
Loop Until inStream.IsEOS
Call inStream.Close
Call outStream.Close
fileNum% = Freefile()
Open outPath For Input As fileNum%
Do While Not Eof(fileNum%)
Line Input #1, InputStr$
If txt$<> "" Then
ln=Chr$(10)
Else
ln=""
End If
txt$= txt$ & ln & InputStr$
Loop
Close fileNum%
Kill outPath
Msgbox txt$
--- Ende Code ---
Danke Euch allen!
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln