![]() |
LightWeight XML-Unit gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Ich suche eine XML-Unit, die ohne Classes usw. auskommt. Grund ist der, ich will sie in meinem nonVCL Usermanager einsetzen. Der XML-Export ist zwar schon drinne, aber das konnte ich relativ einfach von Hand realisisren. Nur zum Impoertieren müsste ich eine XML-Datei wieder auslesen und das ist "von Hand" doch etwas mühsam.
Die XML-Unit muss auch gar nicht so viel können. Es reicht, wenn sie mit meiner XML-Datei (siehe Anhnag) klar kommt. Alternativ wäre ich auch an einer Idee interessiert, wie man das auch ohne eine XML-Unit auslesen könnte. Das heisst, etwas "fest verdrahtes" wäre auch akzeptabel. |
Re: LightWeight XML-Unit gesucht
|
Re: LightWeight XML-Unit gesucht
Delphi-Quellcode:
Mal sehen, wie viel das ausmacht, ob das noch akzeptabel ist. Aber danke schon mal.
Uses
Classes, // for TStrings Ich bin für weiter Vorschläge immer noch offen. ;) |
Re: LightWeight XML-Unit gesucht
Hallo,
nutz doch einfach die XML-Bibliothek von Microsoft. Die ist eh auf jedem Computer drauf. Gruß xaromz |
Re: LightWeight XML-Unit gesucht
Zitat:
Zur Not ein Array Of String... Oder: ![]() |
Re: LightWeight XML-Unit gesucht
Ich habe gesehen, dass in der XMLLib von Muetze1 auch noch die SysUtils eingebunden wird und die Unit ContNrs wegen der Objektliste. Es wird mir also nichts bringen nur die StringgListen Unit von Hador zu nehmen. Ich muss mal gucken, ob ich es verschmerzen kann die XMLLib so zu nehmen, wie sie ist.
@Muetze1: Zum Coüpyright
Delphi-Quellcode:
Hiermit informiere ich dich offiziell, dass ich sie eventuell bei meinem kommerziellen Projekt XP Usermanager einzusetzen gedenke. Natürlich wirst du im About-Dialog erwähnt werden. ;)
// This unit is released as freeware for all non-commercial projects. All
// commercial projects using this unit have to inform the author - the usage // in that projects is allowed afterwards. If this won't be done - the usage // is illegal! |
Re: LightWeight XML-Unit gesucht
Klar, ist aber eh nicht kommerziell - oder verkaufst du diesen?
Ich habe das eigentlich nur drinne, um mal einen Überblick zu haben wie oft/viel Firmen die nutzen. Alles andere ist mir egal - du hast natürlich dir Erlaubnis. Die Contnrs könnte man noch ersetzen wenn man die Liste selber macht - z.B. durch Ableitung von TList (würde dann Classes brauchen). Die SysUtils wäre afair nur für AnsiSameText() und könnte somit auch ersetzt werden. Ich bin aber ansonsten noch an der XMLLib2, aber die wird deutlich grösser und mit mehr Funktionalität (Entitys, DTD, WideString, etc) und daher nicht mehr in deinem Sinne. |
Re: LightWeight XML-Unit gesucht
Also der
![]() |
Re: LightWeight XML-Unit gesucht
Letztens hab' ich ein Projekt mit XML gemacht und dabei die ThaXML genutzt. Die ist extrem klein und für den Eigengebrauch, d. h. eigenes Ein- und Auslesen ohne fremde Manipulation, bestens geeignet.
Die Lib gibts, samt einem verständlichen Tutorial unter ![]() |
Re: LightWeight XML-Unit gesucht
Oh, wusste ich nicht. Naja, da waren die Daten im Hinterkopf mal wieder verändert und die CRC-Synapsen haben nix gesagt beim Zugriff....
Jo, andere Libs sind auf meiner Seite mit verlinkt. Ich weise auf alle mit bekannten Alternativen hin - ich präsentiere meins ganz und gar nicht als einziges Produkt. |
Re: LightWeight XML-Unit gesucht
Zitat:
![]() |
Re: LightWeight XML-Unit gesucht
Ich denke, ich setze mich mal hin und nutze mal intensiv deine Klassen um eine nonVCL, lightweight XMLLib zu erstellen.
|
Re: LightWeight XML-Unit gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Alternativ gäbe es da noch eine Unit die sich SimpleXML nennt. Ich habe mit dieser Unit noch nicht gearbeitet, aber sie ist recht schlank und konzentriert sich wirklich nur auf das wesentliche.
Eine Frage noch, warum setzt du grade auf XML?. Um ein paar Benutzer-Profile zu sichern, sollte das INI-Konzept doch völlig ausreichen? :gruebel: |
Re: LightWeight XML-Unit gesucht
Weil eine XML-Datei dafür geeigneter ist. Guck dir einfach mal meine XML-Datei aus dem ersten Posting an.
|
Re: LightWeight XML-Unit gesucht
@bigg: kannst du mir sagen (übersetzen) unter welcher Lizenz SimpleXML steht?
Ich kann mit den ganzen vmtl. russischen Sonderzeichen nix anfangen und eine solche Klasse wäre auch für mich nicht uninteressant. Ansonsten warte ich einfach auf Muetze :mrgreen: |
Re: LightWeight XML-Unit gesucht
Die Unit hatte ich vor einigen Jahren mal bei Torry entdeckt und es gibt sogar noch eine aktuellere Version:
![]() PS: Die russischen Kommentare kann ich dir nicht mal ansatzweise übersetzen, aber eins ist sicher es ist freeware. @Luckie: Die Notwendigkeit zur Verwendung von XML kann ich imho nicht erkennen:
Code:
Eigentlich ein Musterbeispiel, um mit INI's umzugehen...
[Administrator]
Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Debugger Users, Debuggerbenutzer, Administratoren" [ASPNET] Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Debugger Users, Debuggerbenutzer, Administratoren" [GAST] Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Gäste" [Hilfeassistent] Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Gäste" [Michael] Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Gäste" [SUPPORT_388945a0] Fullname = "" Description = "" HomeDir = "" ScriptPath = "" CantChangePW = 0 AccountExpires = -1 MustChangePW = 0 AccountIsDeactivated = 0 AutoLogin = 0 IsAccountHidden = 0 Groups = "Gäste" PSPS: Solltest du dennoch bei XML bleiben, würde ich noch an der Lesbarkeit des Documents schrauben. Dies ließe sich erreichen, in dem du alle Attribute eines Schlüssels auch als Properties speicherst:
Code:
<Account name="XYZ" UserMustChPW="0" ... >
|
Re: LightWeight XML-Unit gesucht
Nja aber so ganz unerheblich ist eine Lizens nicht, da, wenn der Code unter der GPL steht, das ganze Projekt unter der GPL stehen müsste etc.
Aber in diesem Fall ist das nicht der Fall :mrgreen: Von Google aus dem russischen übersetzt: ----------------------------- Licence Restrictions exist. The library is free and can be used for any purpose. Allowed any changes and the use of modified libraries without restrictions. The only requirement : my commentary, which appeared in the top SimpleXML.pas should be unchanged in all versions library. All copyrights to the library by myself, that is, Mikhail Vlasov. ----------------------------- |
Re: LightWeight XML-Unit gesucht
Kleine Zwischenfrage:
Zitat:
|
Re: LightWeight XML-Unit gesucht
So, bin nun fleissig dabei eine nonVCL Version zu tippen. Ich habe noch zwei Problemfälle und bräuchte daher Vorschläge von euch dazu:
1. SysUtils: Exception. Wie kann ich mein Exception Handling anders machen? Ansonsten müsste ich hier richtig böse mit Rückgabewerten und Exits arbeiten. Gibt es dazu eine Alternative in nonVCL? 2. Classes: TStream. Deren Ableitungen sind kein Problem. Wenn ich die Library nicht einschränken will auf Dateien, dann bräuchte ich dafür entsprechenden Ersatz. Gibt es dort entsprechende Ansätze? Ansonsten stell ich das einfach auf WinAPI direkt um, dann aber nur noch Dateien möglich. @Hador: Deine TObjList kann man aber noch deutlich verschnellern, wenn man einen Pointer verwendet und mit Move() arbeitet. Ein Array Of XXX ist durch das umkopieren nicht gerade eine günstige Wahl. Wenn die anderen beiden Probleme geklärt sind, dann mach ich das mal. |
Re: LightWeight XML-Unit gesucht
@bigg: Nun ja, gerade das mit den Gruppen finde ich etwas blöd, wenn ich die durch Kommas getrennt ablegen müsste. Da finde ich die XML Lösung doch besser. Und alle Attribute als Eigenschaften speicher, erhöht meiner Meinung nach nicht die Lesbarkeit, da ich dann eine lange Zeile hätte.
|
Re: LightWeight XML-Unit gesucht
Zitat:
Evtl. setze ich mich in den nächsten Tagen mal dran und schreibe sie um. |
Re: LightWeight XML-Unit gesucht
Wow, beide nonVCL Programmierer antworten, aber keiner hat eine Idee zu meinen beiden Problemen? Ich bastel gerne eine nonVCL Version der XMLLib, aber ich brauch Hilfe zu den Problemen. Ich belasse es auch in diesem Thread, schliesslich geht es direkt darum. Wenn gewünscht kann ich auch gerne neue Threads aufmachen, aber das lohnt mMn nicht.
|
Re: LightWeight XML-Unit gesucht
Hi Muetze1,
Kannst Du nicht das Windows-Interface IStream verwenden? mfG mirage228 |
Re: LightWeight XML-Unit gesucht
Hmm, kannt ich noch nicht. Ich werde mich mal kundig machen. Vom Namen her klingt es ja richtig passend. Danke!
|
Re: LightWeight XML-Unit gesucht
Also ihr braucht euch wegen mir jetzt nicht diese Mühe zu machen und auf Biegen und Brechen eine nonVCL XML-Unit erstellen zu wollen. :?
Allerdings finde ich es natürlich klasse. :mrgreen: |
Re: LightWeight XML-Unit gesucht
Hallo,
Zitat:
Gruß xaromz |
Re: LightWeight XML-Unit gesucht
Zitat:
Lösen konnte das erst die Installation des XML-SDK :( Aber gut, soviel dazu, wir wollen hier nicht vom Thema ablenken ;-) Danke! |
Re: LightWeight XML-Unit gesucht
Zitat:
Zitat:
-- Übrigends kann man bei meiner Liste, wie ich festgestellt habe noch einiges mehr verbessern. Ich muss mich nur erstmal in das Arbeiten mit Pointern einarbeiten. Eine Sache, auf die ich bisher, bis auf ein paar Kleinigkeiten, verzichtet habe. EDIT: Die überarbeitete ![]() |
Re: LightWeight XML-Unit gesucht
Ich wollte mal nachfrage, was aus den nonVCL XML Projekten geworden ist. :angel2:
|
Re: LightWeight XML-Unit gesucht
Ist denn xaromz´s Vorschlag, einfach per COM Microsofts XML-Schnittstellen zu nutzen, so abwegig? Ich hatte damit bis jetzt noch keine wirklichen Schwierigkeiten...
Cu, Udontknow |
Re: LightWeight XML-Unit gesucht
Wenn ich davon die benötigte Unit erzeugen lasse habe ich alles wieder drinne: SysUtils, Classes, ... Und genau das will ich nicht.
|
Re: LightWeight XML-Unit gesucht
Habe spasseshalber mal die Unit für XML 5.0 erzeugt, und die einzige Unit, die du tatsächlich dort drinnen brauchst, ist ActiveX. Alles andere kannst du entfernen. Wieso die dahingepackt werden, ist mir zwar nicht so klar, aber naja... ;-)
Edit: Tja, doch nicht sooo einfach. ComObj wird im Implementation-Teil angegeben, aber es scheinen nicht viele Routinen aus ComObj zu sein, die man benötigt (CreateComObject und CreateRemoteComObject). Vielleicht kann man die herausziehen? Cu, Udontknow |
Re: LightWeight XML-Unit gesucht
Hallo Luckie.
Damals gab es auf meiner Seite Probleme mit der Nutzung von IStream, aber das hat sich nun eigentlich gegeben, da ich zwischenzeitlich die Lib aus anderen Gründen umgestellt habe. Ich werde mich nochmal ran machen und eine erstellen, es sollten nun alle Probleme von damals gelöst sein. Ich melde mich dann nochmal... |
Re: LightWeight XML-Unit gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mir mal die Mühe gemacht, die Teile aus ComObj herauszuziehen, einige Stellen musst du noch anpassen, da ich z.B. nicht weiss, wie du dein Exceptionhandling betreibst.
Cu, Udontknow |
Re: LightWeight XML-Unit gesucht
Hallo,
auf meiner Seite findest Du unter ![]() Gruß xaromz |
Re: LightWeight XML-Unit gesucht
Ah, genau so etwas habe ich gesucht. Besten Dank.
|
Re: LightWeight XML-Unit gesucht
Ok, dann spare ich mir die Zeit.
|
Re: LightWeight XML-Unit gesucht
Jetzt hat es mich auch in die XML-Non-VCL verschlagen. Gibt es hier schon Neuigkeiten oder schläft das Topic... // Grüße Martin
|
Re: LightWeight XML-Unit gesucht
Also ich werde mal die Unit von xaromz ausprobieren und dann wietersehen.
|
Re: LightWeight XML-Unit gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
@xaromz: Wie kann ich denn mit deiner Unit eine XML-Dati laden?
Ic habe das jetzt so versucht:
Delphi-Quellcode:
Aber da steigt er mir sofort aus dem Programm aus ohne Fehlermeldung oder so. :gruebel:
procedure TImport.Import;
var User: TUser; XMLDoc: IXMLDOMDocument; begin User := TUser.Create; XMLDoc := CoDOMDocument40.Create; if XMLDoc.load(FXMLFile) then begin writeln('gut'); end else begin Writeln('Fehler'); end; //Add(User); end; Die XML Datei im Anhang. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz