Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241115 (2551)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Wieder Probleme mit Lesen und Schreiben von Textdatei
Martin Pohl
| 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
Frank Abbing
| 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
Roland G. Hülsmann
| 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
Frank Abbing
| 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

| Zurück zur Übersicht