Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   XML Datei anzeigen (https://www.delphipraxis.net/187378-xml-datei-anzeigen.html)

knochen 24. Nov 2015 12:09

XML Datei anzeigen
 
Hallo zusammen,

ich habe eine kleine XML mit einem Beispielinhalt:
<?xml version="1.0"?> <request><request_type>PUT_FILE</request_type><username>123</username><password>abc</password></request>

Ich möchte diese Datei laden und in einem Memo (oder einem beliebigen anderen Control) anzeigen, jedocher in formatierter Form:

Delphi-Quellcode:
 <?xml version="1.0"?>
 <request>
   <request_type>PUT_FILE</request_type>
   <username>123</username>
   <password>abc</password>
 </request>
Es geht nicht darum, Inhalte auszulesen, zu manipulieren oder wieder zu speichern, es geht ausdrücklich nur um ein Preview der Datei, das ich optisch so ansprechend darstellen möchte, dass es in eingerückter Form und mehrzeilig erscheint.

Wie geht das?

Vielen Dank im Voraus.

Perlsau 24. Nov 2015 12:48

AW: XML Datei anzeigen
 
Das ist relativ einfach, wenn die XML-Dateien, die du visuell darstellen möchtest, eine gewisse Größe nicht überschreiten. Bei 32-Bit-Anwendungen stehen – je nach vorhandener RAM-Größe – bis zu 2 Gigabyte Speicher pro Anwendung zur Verfgung, die jedoch nur selten an einem Stück verfüßgbar sind. Das erstmal zur Einleitung.

Zur eigentlichen Darstellung setzt du einen sogenannten Syntax-Highlighter ein, z.B. SynEdit (kostenlos) oder eben einen der kommerziellen (kenne ich gerade keinen). Bei SynEdit sind um die 50 vorgefertigte Highlighter-Komponenten dabei, u.a. auch eine für XML.

Handelt es sich allerdings um sehr große XML-Dateien, passen die nicht mehr als Ganzes in den verfügbaren Speicher, so daß du hier ein wenig mehr Aufwand treiben mußt.

Bambini 24. Nov 2015 12:52

AW: XML Datei anzeigen
 
Zitat:

Zitat von knochen (Beitrag 1322325)
Es geht nicht darum, Inhalte auszulesen, zu manipulieren oder wieder zu speichern, es geht ausdrücklich nur um ein Preview der Datei, das ich optisch so ansprechend darstellen möchte, dass es in eingerückter Form und mehrzeilig erscheint.

Wie geht das?

http://stackoverflow.com/questions/4...ogrammatically

knochen 24. Nov 2015 13:58

AW: XML Datei anzeigen
 
Danke für die schnellen Antworten. SynEdit ist mir zu groß für so eine kleine Anforderung, sieht aber vielversprechend aus. Gut zu wissen, dass es so etwas gibt.
Der Tipp aus Stackoverflow funktioniert vorzüglich, danke :-D

Luckie 24. Nov 2015 19:42

AW: XML Datei anzeigen
 
Zitat:

Zitat von Perlsau (Beitrag 1322331)
Bei 32-Bit-Anwendungen stehen – je nach vorhandener RAM-Größe – bis zu 2 Gigabyte Speicher pro Anwendung zur Verfgung, die jedoch nur selten an einem Stück verfüßgbar sind.

So stimmt es.

Aber warum das gerade hier eine besondere Rolle spielen soll, erschließt sich mir nicht ganz.

SMO 24. Nov 2015 19:54

AW: XML Datei anzeigen
 
Zitat:

Bei 32-Bit-Anwendungen stehen, jedoch nur selten an einem Stück, bis zu 2 Gigabyte Speicher pro Anwendung zur Verfügung, es sei denn sie haben das Bit IMAGE_FILE_LARGE_ADDRESS_AWARE im EXE-Dateikopf gesetzt; dann können es bis zu 3 GB in den 32-Bit-Versionen von Windows sein (erfordert /3GB Bootoption), und sogar bis zu 4 GB in den 64-Bit-Versionen von Windows.
So stimmt es noch mehr. ;)
Quelle.

In Delphi kann man dieses Flag mit der Compilerdirektive {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} setzen (die Windows-Unit muss vorher eingebunden sein, sonst wird die Konstante nicht erkannt, aber man kann auch direkt den Wert $20 = 32 nehmen).

Luckie 24. Nov 2015 20:02

AW: XML Datei anzeigen
 
Ist aber nicht zu empfehlen, weil dann für Windows nur noch 1 GB zur Verfügung stehen im Adressraum des Prozesses und das ist sehr, sehr eng. Und wenn man es richtig macht, dass braucht man das auch nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz