Aktuelle Zeit: 18.11.2017 12:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Unerwünschte Effekte bei RTF-Datei einlesen und speichern
BeitragVerfasst: 07.11.2017 21:10 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo Allerseits!

In meinem Projekt soll mein Proggi eine RTF-Datei (Textvorlage mit Platzhaltern) einlesen, die Platzhalter gemäss Usereingaben ersetzen und als temoräre RTF-Datei wieder speichern.

Meine Testroutine sieht so aus:

Code:
ErsatzString$="abcABC 123"
buffer$=""

If ReadFile(0, GetUserDirectory(#PB_Directory_Documents)+"vorlage.rtf")
  While Eof(0) = 0
    buffer$ = buffer$ + ReadString(0)
  Wend
  CloseFile(0)
 
  buffer$ = ReplaceString(buffer$, "**V_Platzhalter1**", ErsatzString$)

; hier stehen später noch ca. 25 andere Platzhaltertausche, der jeweilige Platzhalter wird je nach Usereingabe mit einem kürzeren oder auch längeren String ersetzt.


  If CreateFile(1, GetUserDirectory(#PB_Directory_Documents)+"fertigtext.rtf")
    WriteStringN(1, buffer$)
    CloseFile(1)
  Else
    MessageRequester("Info","Datei nicht erstellt")
  EndIf
 
Else
  MessageRequester("Info","Vorlage nicht geöffnet")
EndIf


Die Dateien werden gefunden, Prog läuft fehlerfrei durch, der Platzhalter auf der ersten Seite wird ersetzt. Hierbei entstehen jedoch 2 Probleme:
a) Umlaute, ß (und evtl. auch andere Zeichen) werden falsch dargestellt
b) An einer ganz anderen Stelle auf Seite 2 wird aus "Ort, Datum, Unterschrift" der "Ort" entfernt, es bleibt ", Datum, Unterschrift".

Was muss ich mit den Umlauten anstellen, damit die korrekt eingetragen werden?
Kann es sein, dass ich die RTF-Datei nicht so einlesen darf? Oder entsteht der Fehler beim Schreibvorgang? Muss man die Datei evtl. byteweise einlesen und/oder byteweise schreiben? Wie wäre der richtige Weg?

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unerwünschte Effekte bei RTF-Datei einlesen und speicher
BeitragVerfasst: 07.11.2017 22:06 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Welche Compileroption? Unicode oder ASCII (ab 5.60 immer Unicode)
Welche Codierung nutzt Dein Source (ASCII oder UTF8)
Welche Codierung erwartet Dein RTF-Text, ReadString hat z.B. einen 2ten parameter.
Beim Schreiben natürlich dasselbe.

Jetzt nur noch alles abstimmen und es gibt keine Probleme mehr <)

_________________
PureBasic 5.61 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 18.2 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unerwünschte Effekte bei RTF-Datei einlesen und speicher
BeitragVerfasst: 08.11.2017 13:19 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Kleines Beispiel:
Deine MusterRTF mal ein äöüß einfügen, mit dem Editor, mit dem es erstellt wurde. Jetzt mit PB einlesen, solange bis da wirklich wieder äöüß rauskommt, also mit ReadString(#MeinRTF, Flag); Flag mal alle 3 durchprobieren :wink:
Denselben Flag dann auch bei WriteString() nutzen.

Ist eigentlich ganz einfach und findet man mit etwas Erfahrung von selber raus.

Gruß
Thomas

_________________
PureBasic 5.61 | SpiderBasic 2.10 | Windows 10 Pro (x64) | Linux Mint 18.2 (x64)
"Ich möchte gerne die Welt verändern, doch Gott gibt den Quellcode nicht frei."
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unerwünschte Effekte bei RTF-Datei einlesen und speicher
BeitragVerfasst: 08.11.2017 21:51 
Offline
Benutzeravatar

Registriert: 28.08.2017 17:23
Hallo ts-soft,

besten Dank für die Tipps. Compiler ist jetzt auf Ascii eingestellt. Laden und speichern habe ich jetzt mit readbyte bzw. writebyte gemacht, womit sich das Problem der verschwundenen Buchstaben erledigt hat. Mein Verdacht: Offenbar werden mit Readstring Daten eingelesen, die beim Schreiben Fehler verursachen (Steuercodes, Backspace, keine Ahnung was). Funktioniert also so, wie ich es mir gewünscht habe.

Allerdings muss man bei der RTF-Textvorlage (mittels LibreOffice erstellt) aufpassen - scheinbar wird die eine oder andere Formatierung durch meine Textmanipulation gestört. Entweder, weil das RTF damit gar nicht klar kommt (verschiedene Fusszeilen, pipapo) oder weil mit meiner Manipulation irgendwas in der Formatierung kaputt geht. Muss man halt ausprobieren, was geht und was nicht.

Ich habe RTF gewählt, weil ich ein Dateiformat brauche, was einerseits mit LibreOffice zu bearbeiten ist (mit Formatierungen und so), andererseits mit einfachen Mitteln via PB zu manipulieren ist. Moderne Dateiformate sind gepackt und - jedenfalls für mich - viel zu kompliziert aufgebaut, jedenfalls, soweit ich das überblicken kann. Hatte auch an HTML gedacht, falls RTF in eine Sackgasse führen würde. Wenn jemand ein noch besser geeignetes Dateiformat kennt - freue mich über jeden Tipp.

_________________
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unerwünschte Effekte bei RTF-Datei einlesen und speicher
BeitragVerfasst: 08.11.2017 22:46 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
OpenOffice-Dateien sind eigentlich nur ZIPs und darin enthalten sind XML-Dateien, die Formatierungen, Kopf- und Fußzeilen und den eigentlichen Inhalt repräsentieren. Man muss sich einlesen, aber ich erstelle LibreOffice-Dateien komplett selbst mittels Python aus Daten, die in einem anderen Format vorliegen. Mit Purebasic ist das vermutlich nicht so schön handlich wie mit Python zu lösen, aber auch machbar.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Tevo Tarantula 3D-Drucker von Gearbest (Aufbau und Review)
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Unerwünschte Effekte bei RTF-Datei einlesen und speicher
BeitragVerfasst: 10.11.2017 17:10 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Code:
; Erzeuge RTF-Umlaute und Unicode-Zeichen, wie Euro und großes SZ.
; offen Unicode>=$10000
EnableExplicit
Define Test$="ÄÖÜ SZ:"+Chr(7838)+"äöüß Euro:"+Chr(8364)+"µ²³°\áàâéèêíìîóòôúùûýÁÀÂÉÈÊÍÌÎÓÒÔÚÙÛÝ"
ShowMemoryViewer(@Test$,Len(Test$)*2)
Define i
Define RTFText.s=""
For i=1 To Len(Test$)
  Define UniCodeWert=Asc(Mid(Test$,i,1))
  If UniCodeWert<$5C ; Ascii
    RTFText+Chr(UniCodeWert) 
  ElseIf UniCodeWert=$5C ; Rückstrich Sonderbehandlung
    RTFText+"\\"
  ElseIf UniCodeWert>$5C And UniCodeWert<$80 ; Ascii
    RTFText+Chr(UniCodeWert)   
  ElseIf UniCodeWert<=$ff
    RTFText+"\u"+Str(UniCodeWert)+"\'"+LCase(Hex(UniCodeWert))
  Else
    RTFText+"\u"+Str(UniCodeWert)+"\'80"
  EndIf   
Next
Debug RTFText
;\u196\'c4\u214\'d6\u220\'dc SZ:\u7838\'80\u228\'e4\u246\'f6\u252\'fc\u223\'df Euro:\u8364\'80\u181\'b5\u178\'b2\u179\'b3\u176\'b0\\\u225\'e1\u224\'e0\u226\'e2\u233\'e9\u232\'e8\u234\'ea\u237\'ed\u236\'ec\u238\'ee\u243\'f3\u242\'f2\u244\'f4\u250\'fa\u249\'f9\u251\'fb\u253\'fd\u193\'c1\u192\'c0\u194\'c2\u201\'c9\u200\'c8\u202\'ca\u205\'cd\u204\'cc\u206\'ce\u211\'d3\u210\'d2\u212\'d4\u218\'da\u217\'d9\u219\'db\u221\'dd



_________________
Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im sichtbaren Universum.
Bitte Frage fragen.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye