Seite 1 von 1

MemoWrit...

Verfasst: Do, 09. Dez 2021 22:17
von adrian
Hallo zusammen

Ich habe eine Variable mit einem XML-Script als Inhalt. Damit ich diese mit XMLDocOpenFile() laden kann muss ich Sie ja zuerst in ein File speichern, oder gibt es eine Möglichkeit diese Variable direkt auszuwerten?

Nun auf jeden Fall speichere ich diese nun mit Memowrit("test.xml", cVariable)

Der Schluss der Datei sieht im Original wie im Bild 1 aus doch in der Datei test.xml sieht der Schluss der Datei wie im Bild 2 aus, daher ist die XML-Datei natürlich nicht korrekt.
Screenshot 2021-12-09 220904.jpg
Screenshot 2021-12-09 220904.jpg (7.2 KiB) 3661 mal betrachtet
Screenshot 2021-12-09 221237.jpg
Screenshot 2021-12-09 221237.jpg (6.25 KiB) 3661 mal betrachtet
Eventuell hat da jemand eine Idee, oder kennt den Grund.

Besten Dank

Adrian

Re: MemoWrit...

Verfasst: Do, 09. Dez 2021 23:17
von AUGE_OHR
hi,

das letzte Zeichen ist Ctrl-Z was MemoWrit() schreibt.
IHMO sollte das nichts ausmachen

Re: MemoWrit...

Verfasst: Do, 09. Dez 2021 23:27
von adrian
OK, nun habe ich noch ein Leerzeichen angefügt, so wird das letzte Zeichen nicht mehr gelöscht. Doch das Problem ist aber, dass durch das Steuerzeichen die XML-Struktur zerstört wird, das File kann nicht mehr im Browse etc. betrachtet werden und auch der Befehl "XMLDocOpenFile(sXMLFile)" bringt nur noch ein 0 zurück.

Oder gibt es eine andere Möglichkeit eine Variable zu schreiben, daher ohne Steuerzeichen?

Beim Befehl "XMLDocOpenFile()" kann ich ja nur ein File angeben und keine Variable.

Adrian

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 1:40
von AUGE_OHR
hi,

Code: Alles auswählen

#include "Fileio.ch" 
PROCEDURE Main(cFile,cText) 
LOCAL nHandle := FCreate( cFile, FC_NORMAL ) 
      IF nHandle == -1 
         ? "Fehler beim Erzeugen der Datei:", FError() 
      ELSE 
         FWrite( nHandle, cText ) 
         FClose( nHandle ) 
      ENDIF 
RETURN

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 4:47
von Wolfgang Ciriack
StrFile(cText, cFile) aus den ToolsIII.

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 6:27
von Jan
Adrian,

wie Jimmy schon schrieb hängt MemoWrit() ein Steuerzeichen an. Das stört XML-Viewer, da kämpfe ich auch regelmäßig mit, weil ich MemoWrit() manchmal im Befehlsfenster der Workbench nutze für Kontrollzwecke während des Dbuggens. Nimm statt MemoWrit() FWrite(), dann passiert dir das nicht. SInd zwar ein paar Zeilen Code mehr, aber das Problem ist weg.

Jan

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 7:54
von adrian
Ihr seit cool

Schöne Festtage und besten Dank für alle Beiträge

Adrian

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 8:53
von Tom
StrFile() kann das auch in einer einzigen Zeile. Ohne Steuerzeichen.

Re: MemoWrit...

Verfasst: Fr, 10. Dez 2021 9:26
von adrian
Warum kompliziert wenn es doch so einfach ist, läuft alles wunderbar, besten Dank nochmals.

Ich werde Euch als Gegenleistung noch einen Beitrag im Bereich REST erstellen, da hatte ich Hilfe von Alaska Direkt, da dies so nicht funktionierte.

Infos folgen

Adrian

Re: MemoWrit...

Verfasst: So, 12. Dez 2021 9:38
von brandelh
Alaska selbst warnt direkt vor der Verwendung von Memowrit(), bei Binärdaten, da es der Zeichenkonvertierung unterliegt.
Bei echtem bzw. einfachem Text stört nur das folgende Steuerzeichen, aber es könnte auch sein, dass bei einer XML Datei Zeichen geändert werden die nicht geändert werden dürfen.

StrFile() war ja aus den Tools, bei XBase++ ist es mittlerweile enthalten, aber in der Wissensdatenbank gibt es auch eine Übersetzung mit fopen etc. einfacher Quellcode, absolut sicher.