Domino 9 und frühere Versionen > ND8: Entwicklung

Problem mit Line Input

<< < (2/3) > >>

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