Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   LightWeight XML-Unit gesucht (https://www.delphipraxis.net/80997-lightweight-xml-unit-gesucht.html)

Luckie 18. Nov 2006 19:30


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.

Mackhack 18. Nov 2006 20:00

Re: LightWeight XML-Unit gesucht
 
Hi,

vlt hilft dir ja die Unit von Muetze1 weiter!

Muetze1's xmllib

Luckie 18. Nov 2006 20:02

Re: LightWeight XML-Unit gesucht
 
Delphi-Quellcode:
Uses
  Classes,     // for TStrings
Mal sehen, wie viel das ausmacht, ob das noch akzeptabel ist. Aber danke schon mal.

Ich bin für weiter Vorschläge immer noch offen. ;)

xaromz 18. Nov 2006 21:22

Re: LightWeight XML-Unit gesucht
 
Hallo,

nutz doch einfach die XML-Bibliothek von Microsoft. Die ist eh auf jedem Computer drauf.

Gruß
xaromz

Muetze1 18. Nov 2006 21:31

Re: LightWeight XML-Unit gesucht
 
Zitat:

Zitat von Luckie
Mal sehen, wie viel das ausmacht, ob das noch akzeptabel ist. Aber danke schon mal.

Ist an keiner wichtigen Sache beteiligt. D.h. die könnte man rausschmeissen. Also Kommentare, etc brauchst du bestimmt nicht, oder?

Zur Not ein Array Of String...

Oder: TStrList von Hador

Luckie 24. Jan 2007 14:38

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:
//   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!
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. ;)

Muetze1 24. Jan 2007 15:02

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.

Luckie 24. Jan 2007 15:04

Re: LightWeight XML-Unit gesucht
 
Also der Usermanager? Doch der ist Shareware.

WorldCitizenChris 24. Jan 2007 15:11

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 http://www.dsdt.info/tutorials/thaxml/

Muetze1 24. Jan 2007 15:14

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.

Hador 24. Jan 2007 15:20

Re: LightWeight XML-Unit gesucht
 
Zitat:

Zitat von Luckie
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.

Die TObjectList kannst du theoretisch auch mit meiner TObjList ersetzen. :wink:

Muetze1 24. Jan 2007 15:39

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.

bigg 24. Jan 2007 16:03

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:

Luckie 24. Jan 2007 17:21

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.

Hador 24. Jan 2007 18:06

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:

bigg 24. Jan 2007 18:46

Re: LightWeight XML-Unit gesucht
 
Die Unit hatte ich vor einigen Jahren mal bei Torry entdeckt und es gibt sogar noch eine aktuellere Version:
http://www.torry.net/quicksearchd.ph...+xml&Title=Yes

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:
[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"
Eigentlich ein Musterbeispiel, um mit INI's umzugehen...


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" ... >

Hador 24. Jan 2007 18:57

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.
-----------------------------

F.W. 24. Jan 2007 19:01

Re: LightWeight XML-Unit gesucht
 
Kleine Zwischenfrage:

Zitat:

Zitat von xaromz
nutz doch einfach die XML-Bibliothek von Microsoft. Die ist eh auf jedem Computer drauf.

Meinst du damit die MSXML2_TLB ? Mit der habe ich jetzt schon einige Programme geschrieben und musste beim Testen z.B. in der Schule feststellen, dass dort wahrscheinlich irgendwas fehlt, denn da kommt immer der Fehler, dass die Klasse nicht registriert sei. (Windows 2000)

Muetze1 24. Jan 2007 19:32

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.

Luckie 24. Jan 2007 21:23

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.

Hador 24. Jan 2007 21:34

Re: LightWeight XML-Unit gesucht
 
Zitat:

Zitat von Muetze1
@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.

Du hast du wohl Recht. Als ich mir die gebastelt habe, ging es mir vorallem darum möglichst schnell fertig zu werden ^^
Evtl. setze ich mich in den nächsten Tagen mal dran und schreibe sie um.

Muetze1 24. Jan 2007 23:30

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.

mirage228 25. Jan 2007 06:02

Re: LightWeight XML-Unit gesucht
 
Hi Muetze1,

Kannst Du nicht das Windows-Interface IStream verwenden?

mfG
mirage228

Muetze1 25. Jan 2007 07:36

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!

Luckie 25. Jan 2007 09:21

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:

xaromz 25. Jan 2007 09:41

Re: LightWeight XML-Unit gesucht
 
Hallo,
Zitat:

Zitat von F.W.
Kleine Zwischenfrage:

Meinst du damit die MSXML2_TLB ? Mit der habe ich jetzt schon einige Programme geschrieben und musste beim Testen z.B. in der Schule feststellen, dass dort wahrscheinlich irgendwas fehlt, denn da kommt immer der Fehler, dass die Klasse nicht registriert sei. (Windows 2000)

Es kommt natürlich immer auf die Version an. IE6 benutzt die Version 4. Office 2003 IMHO die Versoin 6. Ein naktes Windows 2000 möglicherweise Version 3. Wenn Du jetzt das falsche Interface anforderst, dann knallt es natürlich. In diesem Fall hilft nur, zu überprüfen, welche Version installiert ist und die zu nutzen. Alternativ kann man die Version 4 auch in ein MSI reinpacken, damit es automatisch mitinstalliert wird. Für MSXML6 hat Microsoft dies Möglichkeit leider entfernt.

Gruß
xaromz

F.W. 25. Jan 2007 12:55

Re: LightWeight XML-Unit gesucht
 
Zitat:

Zitat von xaromz
Es kommt natürlich immer auf die Version an. IE6 benutzt die Version 4. Office 2003 IMHO die Versoin 6. Ein naktes Windows 2000 möglicherweise Version 3. Wenn Du jetzt das falsche Interface anforderst, dann knallt es natürlich. In diesem Fall hilft nur, zu überprüfen, welche Version installiert ist und die zu nutzen. Alternativ kann man die Version 4 auch in ein MSI reinpacken, damit es automatisch mitinstalliert wird. Für MSXML6 hat Microsoft dies Möglichkeit leider entfernt.

Ich habe verschiedene Interfaceversionen probiert und keine hat funktioniert. Und das beste ist, die Funktion zum Überprüfen ob MSXML installiert ist, hat True zurückgegeben und dennoch kam der Fehler.
Lösen konnte das erst die Installation des XML-SDK :(

Aber gut, soviel dazu, wir wollen hier nicht vom Thema ablenken ;-) Danke!

Hador 25. Jan 2007 21:04

Re: LightWeight XML-Unit gesucht
 
Zitat:

Zitat von Muetze1
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?

Das ganze sollte man möglichst vorher abfragen und gegebenenfalls einen Fehler per Result zurückgeben (Habe ich, wie ich feststellen musste in meiner Liste auch nicht so ganz konsequent gemacht). In einigen Fällen kann man bspw. nil oder -1 zurückgeben in anderen macht man aus einer Prozedur eine Funktion und gibt einen Boolean zurück, etc.

Zitat:

Zitat von Muetze1
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.

Afaik müsstest du mit AssignFile, Rewrite, Reset, ReadBuffer, WriteBuffer und ClodeFile arbeiten. Eine Alternative dazu kenne ich nicht.

--

Ü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 TObjList ist fertig. Ich denke, ich were auch einige meiner anderen Listen demnächst mal überarbeiten.

Luckie 10. Mai 2007 10:01

Re: LightWeight XML-Unit gesucht
 
Ich wollte mal nachfrage, was aus den nonVCL XML Projekten geworden ist. :angel2:

Udontknow 10. Mai 2007 10:17

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

Luckie 10. Mai 2007 10:38

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.

Udontknow 10. Mai 2007 10:56

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

Muetze1 10. Mai 2007 10:57

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...

Udontknow 10. Mai 2007 11:07

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

xaromz 10. Mai 2007 12:09

Re: LightWeight XML-Unit gesucht
 
Hallo,

auf meiner Seite findest Du unter Bibliotheken ein Archiv mit einer minimalen TLB für MSXML. Die einzigen benötigten Units sind ActiveX, Windows, Messages und Types.

Gruß
xaromz

Luckie 10. Mai 2007 12:14

Re: LightWeight XML-Unit gesucht
 
Ah, genau so etwas habe ich gesucht. Besten Dank.

Muetze1 10. Mai 2007 21:51

Re: LightWeight XML-Unit gesucht
 
Ok, dann spare ich mir die Zeit.

mschaefer 15. Mai 2007 08:46

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

Luckie 15. Mai 2007 08:55

Re: LightWeight XML-Unit gesucht
 
Also ich werde mal die Unit von xaromz ausprobieren und dann wietersehen.

Luckie 4. Jun 2007 23:20

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:
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;
Aber da steigt er mir sofort aus dem Programm aus ohne Fehlermeldung oder so. :gruebel:

Die XML Datei im Anhang.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Seite 1 von 2  1 2      

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