Autor | Thema: Wieder Probleme mit Lesen und Schreiben von Textdatei | | Datum:27.05.02 06:25 
(bananenfresser@msn.com) | |
Hallo! Dieser Code soll eigentlich die Datei notiz.mpo öffnen. Später soll sie gespeichert werden, aber das mache ich erst
später. Bei jedem Aufruf kommt jedoch die Fehlermeldung: Der Text paßt nicht komplett in die Bereichsvariable! - Zeile 8:
ReadText size#,"notiz.mpo". Warum geht das nicht? Ihr könnt den Code gerne verändern.
proc notizzettel
declare _ende%,_dlg%,notizblock%,notiz$,size#
dim size#,@filesize("notiz.mpo")
ReadText size#,"notiz.mpo"
@SendMessage(notizblock%,$000C,0,0)
dispose size#
let _dlg%=@createdialog(%Hwnd,"Kleiner Helper - Notizzettel",248,152,402,300)
let notizblock%=@createmultiedit(_dlg%,notiz$,0,0,392,264)
let _ende% = 0
whilenot _ende%
waitinput
if @equ(%key,2)
let _ende% = 1
elseif @getfocus(notizblock%)
' Aktion noch nicht definiert!
endif
wend
@destroywindow(_dlg%)
endproc
|
| | Datum:27.05.02 06:38 
| |
Hallo,
Schau mal in die Profan Anleitung, da steht unter ReadText:
"Die Textdatei S wird komplett in den Speicherbereich (beginnend ab Offset-Adresse 0) eingelesen. Die Zeilen werden mit CR/LF (Zeichen 13 + 10) getrennt. Am Ende wird ein Null-Byte angehängt. Paßt der Text nicht in den mit DIM zugewiesenen Bereich, wird er abgeschnitten und es erfolgt eine Warnung."
Es werden also in jedem Fall noch zusätzliche Bytes in die Datei eingefügt, darum stimmt deine Berechnung per @filesize("notiz.mpo") nicht...
Du mußt schon Profan's BlockRead verwenden.
Meine ProSpeed.dll bietet zwei Funktionen, ReadFileFast() und WriteFileFast(). Damit können Dateien (egal wie groß) sehr schnell und in einer Zeile in einen Bereich gelesen / und auch wieder zurück gespeichert werden.
http://www.12move.de/home/frankabbing/
Gruß, Frank
|
| | Datum:27.05.02 08:29 
(rgh-soft@t-online.de) | |
Hallo,
da ja ein Null-Byte angehängt wird, muß der Bereich ein klein wenig größer sein, als der mit @filesize ermittelte wert. So wird es gehen:
dim size#,@filesize("notiz.mpo")+2
bzw. ohne Operator:
dim size#,@add(@filesize("notiz.mpo"),2)
Gruß
Roland
|
| | Datum: 27.05.02 16:41 
| |
Hallo,
Anleitung: "...die Zeilen werden mit CR/LF (Zeichen 13 + 10) getrennt..."
Kommt nur ein Null-Byte hinzu, oder auch noch Returns ?
Hatte ich jetzt so verstanden...
Gruß, Frank
|
|
|