AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte himXML (gesprochen himix ML)
Thema durchsuchen
Ansicht
Themen-Optionen

himXML (gesprochen himix ML)

Ein Thema von himitsu · begonnen am 12. Mär 2009 · letzter Beitrag vom 11. Nov 2020
Antwort Antwort
Seite 17 von 26   « Erste     7151617 1819     Letzte »    
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#1

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 19:33
Zitat von holliesoft:
Bin sehr zufrieden mit himXML, würde gerne was spenden. Himitsu, hast Du ein Paypal Konto?
ein Link steht ganz oben mit in den Dateiheadern (falls ich den nicht ausversehn kaputtgemacht hab, beim Versuch die neue Webseite zu basteln)
[edit] ok, der geht gleich wieder ... nur noch schnell die HTML neu hochladen ._.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: himXML (gesprochen himix ML)

  Alt 31. Aug 2009, 20:06
Ach ich dachte nicht das CData ein eigener Node ist. Danke

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 11:47
Ich habe ein seltsames Problem.

Und zwar bekomme ich unter Linux (Wine) immer eine Zugriffverletzung (Runtimer error 216) wenn in einem Project deine XML lib drin ist, sie muss auch nur eingebunden sein um das zu verursachen..

Was kann das sein.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#4

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 12:21
Dann wird es wohl ein Problem in der Initialisierung sein.

Da ich kein Linux bei mir und auch keine Erfahrungen mit Wine hab...

Könntest du es irgendwie debuggen?



Da es schon alleine beim Einfügen probleme gibt, dürfte das Problem wohl in der Prozedur TXMLFile.Initialize (in himXML.pas) zu suchen sein.

Dort werden im Problemfall einige Windows Funktionen verwendet.


Von den dort verwendeten Funktionen sollten TRTLCriticalSection, CopyMemory, ZeroMemory und CompareMem wohl keine Probleme machen und auch unter Wine laufen

CharLowerBuffW dürfte hottendlich auch keine Probleme machen, aber wenn es da Probleme beim Unicode (also bei den konvertierten Zeichen) gibt, wird versucht eine Log-Datei auf dem Desktop anzulegen,
wofür SHGetSpecialFolderLocation, SHGetPathFromIDList, CoTaskMemFree verwendet wird (um den Desktop zu finden).

Vielleicht weiß ja wer, ob es mit einigen der genannten Funktionen Probleme gibt.

Die Zugriffsverletzung könnte ja darauf hindeuten, daß es z.B. beim AssignFile oder schon bei der Ermittlng des Desktop-Verzeichnisses irgendwas nicht stimmt. (schon klar, da Linux ja 'nen anderen Ordneraufbau hat ... und ich schreibe ja für Windows )




*überleg* ich versuch mal ein kleines Testprojekt zu basteln, wird aber noch ein paar Minütchen dauern.


[add]
im Anhang ein Testprojekt - ist 'ne Konsolenanwendung, welche nur die Initialisierung enthält



[add]
ansonten kann ich nur erwähnen ... ich weiß aber nicht, wie lande ich noch benötigt ... daß ich fast das ganze Projekt grad umstelle und viele stellen überarbeite bzw. neu schreibe.

Das Interface der meißten Klasse bleibt aber soweit erhalten und es sollten demnach in der Verwendung keine großen Änderungen geben (hoff ich mal)
Angehängte Dateien
Dateityp: zip projekte_187.zip (51,4 KB, 3x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 12:44
Das ist das Ergebnis

:1
:2
:3
:4
:5
Exception: Initialize 1
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
316 Beiträge
 
Delphi 12 Athens
 
#6

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 13:05
Hallo himitsu,
kannst Du abschätzen, ob und wann Du es noch für eine D7 verfügbar machen kannst?
Danke+Gruß,
Christoph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#7

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 13:46
Also das mit dem Wine war es dann erstmal (in der aktuellen Version werde ich das nicht mehr ändern)
werde aber versuchen es in Nächsten zu umgehen

Der Fehler tritt also hier auf und das weißt das woll auf eine kranke/bescheuerte/defekte UnicodeTabelle seiten Linux oder Wine hin.
Genauer gesagt auf eine Doppel/-belegung oder anders ausgerückt Groß- und Kleinschreibung stimmen nicht überein.
Delphi-Quellcode:
// copy uppercase chars + check for lower/upper collisions + create check char list
// + fill non-upper/lower chars (#0)
For C := Low(Chars) to High(Chars) do Begin
  If Chars2[C] <> C Then
    If Chars[C] = 0 Then Chars[C] := Chars2[C]
    Else Raise Exception.Create('Initialize 1');
  Chars2[C] := C;
  If Chars[C] = 0 Then Chars[C] := C;
End;

Aber nochmal zu dem Runtimfehler 216:
hast du die SysUtils vor himXML in dein Projekt eingefügt, oder erst danach, bzw. garnicht?


Und das mit dem Delphi 7 werd' ich dann sehn, aber jedenfalls werden (wenn es denn klappt) dort einige Funktionen verschwinden, da ich nicht alles so umschreiben kann/will, daß es dann auch da läuft (das wäre einfach zuviel Aufwand).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 13:48
SysUtils ist als erstes im Project

P.S. wenn ich disen Block raus nehme läuft alles
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#9

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 13:59
Zitat von franktron:
P.S. wenn ich disen Block raus nehme läuft alles
Das Problem ist nur, daß über diese Blöcke die Groß-/Kleinschreibung im Projekt geregelt wird
und ohne diese die Stringvergleiche nicht mehr richtig arbeiten.

Ausdiesem Grunde wird ja auch in dieser Init-Prozedur so viel Verglichen und vorallem kontrolliert,
da es sonst zu unvorhersehbaren Problemen kommen kann,
wenn die Vergleichstabellen fehlerhaft sind.

Daß heißt ich muß erstmal eine alternative schaffen, da die Unicode-Tabelle definitiv defekt ist und sich auf diesen Wege da also nix machen läßt.

Das Einzige, welches du solange machen kannst, wäre zumindestens die fehlerhalften Werte zu übernehmen,
dann läuft dann wenigstens ein Großteil noch,
Delphi-Quellcode:
If Chars[C] = 0 Then Chars[C] := Chars2[C]
;//Else Raise EXMLException.CreateEx(....
aber wenn du dann eines der fehlerhaften Zeichen in deinen Texten hast (wie z.B. im Node-Text oder den Node-/Attribut-Namen), dann beschwere dich bitte nicht, wenn dort dann z.B. Einiges nicht gefunden wird oder es andersweitige Vergleichsprobleme gibt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#10

Re: himXML (gesprochen himix ML)

  Alt 8. Sep 2009, 17:56
OK, hier mal eine Protierung der neuen Prozedur (ich hoffe es läuft auch so)
Delphi-Quellcode:
.
    Class Procedure TXMLFile.Initialize;
      Procedure OpenLog(Var F: TextFile);
        Var i: Integer;
          PIDL: Pointer;
          Path: Array[1..MAX_PATH] of Char;

        Begin
          If Succeeded(SHGetSpecialFolderLocation(0, 0{CSIDL_DESKTOP}, PIDL)) Then Begin
            If SHGetPathFromIDList(PIDL, @Path) Then Begin
              Try
                i := Length(ParamStr(0));
                While (i > 0) and (ParamStr(0)[i] <> '\') do Dec(i);
                AssignFile(F, String(PChar(@Path)) + '\' + Copy(ParamStr(0), i + 1, 888) + '.log');
                Try
                  {$i+}
                  Rewrite(F);
                Except
                  Raise EXMLException.Create(Self, 'Initialize', @SInternalError, [3]);
                End;
              Finally
                CoTaskMemFree(PIDL);
              End;
            End Else Begin
              CoTaskMemFree(PIDL);
              Raise EXMLException.Create(Self, 'Initialize', @SInternalError, [2]);
            End;
          End Else Raise EXMLException.Create(Self, 'Initialize', @SInternalError, [1]);
        End;

      Const toHex: Array[0..15] of Char = '0123456789ABCDEF';

      Var Chars, Chars2: Array[Word] of Word;
        C: Word;
        F: TextFile;
        i: Integer;

      Begin
        __DefaultOptions := XMLDefaultOptions;
        __DefaultTextIndent := ' ';
        __DefaultLineFeed := sLineBreak;
        __DefaultValueSeperator := '=';
        __DefaultValueQuotation := '"';
        __PathDelimiter := '\';

        InitializeCriticalSection(__ArrC_Lock);

        // create lower char list
        ZeroMemory(@Chars, SizeOf(Chars));
        For C := Low(Chars) to High(Chars) do Chars2[C] := C;
        CharLowerBuffW(@Chars2, Length(Chars));
        // copy lower blocks
        CopyMemory(@__LowerBlock0, @Chars2[Low(__LowerBlock0)], SizeOf(__LowerBlock0));
        CopyMemory(@__LowerBlock1, @Chars2[Low(__LowerBlock1)], SizeOf(__LowerBlock1));
        CopyMemory(@__LowerBlock2, @Chars2[Low(__LowerBlock2)], SizeOf(__LowerBlock2));
        CopyMemory(@__LowerBlock3, @Chars2[Low(__LowerBlock3)], SizeOf(__LowerBlock3));
        CopyMemory(@__LowerBlock4, @Chars2[Low(__LowerBlock4)], SizeOf(__LowerBlock4));
        CopyMemory(@__LowerBlock5, @Chars2[Low(__LowerBlock5)], SizeOf(__LowerBlock5));
        CopyMemory(@__LowerBlock6, @Chars2[Low(__LowerBlock6)], SizeOf(__LowerBlock6));
        CopyMemory(@__LowerBlock7, @Chars2[Low(__LowerBlock7)], SizeOf(__LowerBlock7));
        CopyMemory(@__LowerBlock8, @Chars2[Low(__LowerBlock8)], SizeOf(__LowerBlock8));
        CopyMemory(@__LowerBlock9, @Chars2[Low(__LowerBlock9)], SizeOf(__LowerBlock9));
        CopyMemory(@__LowerBlockA, @Chars2[Low(__LowerBlockA)], SizeOf(__LowerBlockA));
        // copy lowercase chars
        For C := Low(Chars) to High(Chars) do Begin
          If Chars2[C] <> C Then Chars[C] := Chars2[C];
          Chars2[C] := C;
        End;
        // create upper char list
        For C := Low(Chars) to High(Chars) do Chars2[C] := C;
        CharUpperBuffW(@Chars2, Length(Chars));
        // copy uppercase chars + check for lower/upper collisions + create check char list
        // + fill non-upper/lower chars (#0)
        For C := Low(Chars) to High(Chars) do Begin
          If Chars2[C] <> C Then
            If Chars[C] <> 0 Then Begin
              __CompareBlock0[Low(__CompareBlock0)] := #0;
              OpenLog(F);
              Try
                WriteLn(F, '>>> himXML - initialize error <<<');
                WriteLn(F, 'please contact the software distributor');
                WriteLn(F, 'file:');
                WriteLn(F, ' ', ParamStr(0));
                WriteLn(F, 'date:');
                WriteLn(F, ' ', DateTimeToStr(Now));
                WriteLn(F, 'info:');
                WriteLn(F, ' C = #', Ord(C));
                WriteLn(F, ' Chars2[C] = #', Ord(Chars2[C]));
                WriteLn(F, ' Chars[C] = #', Ord(Chars[C]));
                WriteLn(F);
                WriteLn(F, '*end*');
              Finally
                CloseFile(F);
              End;
              Exit;
            End Else Chars[C] := Chars2[C];
          Chars2[C] := C;
          If Chars[C] = 0 Then Chars[C] := C;
        End;
        // copy upper/lower blocks
        CopyMemory(@__CompareBlock0, @Chars[Low(__CompareBlock0)], SizeOf(__CompareBlock0));
        CopyMemory(@__CompareBlock1, @Chars[Low(__CompareBlock1)], SizeOf(__CompareBlock1));
        CopyMemory(@__CompareBlock2, @Chars[Low(__CompareBlock2)], SizeOf(__CompareBlock2));
        CopyMemory(@__CompareBlock3, @Chars[Low(__CompareBlock3)], SizeOf(__CompareBlock3));
        CopyMemory(@__CompareBlock4, @Chars[Low(__CompareBlock4)], SizeOf(__CompareBlock4));
        CopyMemory(@__CompareBlock5, @Chars[Low(__CompareBlock5)], SizeOf(__CompareBlock5));
        CopyMemory(@__CompareBlock6, @Chars[Low(__CompareBlock6)], SizeOf(__CompareBlock6));
        CopyMemory(@__CompareBlock7, @Chars[Low(__CompareBlock7)], SizeOf(__CompareBlock7));
        CopyMemory(@__CompareBlock8, @Chars[Low(__CompareBlock8)], SizeOf(__CompareBlock8));
        CopyMemory(@__CompareBlock9, @Chars[Low(__CompareBlock9)], SizeOf(__CompareBlock9));
        CopyMemory(@__CompareBlockA, @Chars[Low(__CompareBlockA)], SizeOf(__CompareBlockA));
        // "delete" upper/lower blocks from char list
        CopyMemory(@Chars2[Low(__CompareBlock0)], @__CompareBlock0, SizeOf(__CompareBlock0));
        CopyMemory(@Chars2[Low(__CompareBlock1)], @__CompareBlock1, SizeOf(__CompareBlock1));
        CopyMemory(@Chars2[Low(__CompareBlock2)], @__CompareBlock2, SizeOf(__CompareBlock2));
        CopyMemory(@Chars2[Low(__CompareBlock3)], @__CompareBlock3, SizeOf(__CompareBlock3));
        CopyMemory(@Chars2[Low(__CompareBlock4)], @__CompareBlock4, SizeOf(__CompareBlock4));
        CopyMemory(@Chars2[Low(__CompareBlock5)], @__CompareBlock5, SizeOf(__CompareBlock5));
        CopyMemory(@Chars2[Low(__CompareBlock6)], @__CompareBlock6, SizeOf(__CompareBlock6));
        CopyMemory(@Chars2[Low(__CompareBlock7)], @__CompareBlock7, SizeOf(__CompareBlock7));
        CopyMemory(@Chars2[Low(__CompareBlock8)], @__CompareBlock8, SizeOf(__CompareBlock8));
        CopyMemory(@Chars2[Low(__CompareBlock9)], @__CompareBlock9, SizeOf(__CompareBlock9));
        CopyMemory(@Chars2[Low(__CompareBlockA)], @__CompareBlockA, SizeOf(__CompareBlockA));
        // check for chars out of upper/lower blocks
        If not CompareMem(@Chars, @Chars2, SizeOf(Chars)) Then Begin
          __CompareBlock0[Low(__CompareBlock0)] := #0;
          OpenLog(F);
          Try
            WriteLn(F, '>>> himXML - initialize error <<<');
            WriteLn(F, 'please contact the software distributor');
            WriteLn(F, 'file:');
            WriteLn(F, ' ', ParamStr(0));
            WriteLn(F, 'date:');
            WriteLn(F, ' ', DateTimeToStr(Now));
            WriteLn(F, 'chars:');
            For C := Low(Chars) to High(Chars) do
              If Chars[C] <> Chars2[C] Then Begin
                Write(F, ' ');
                For i := 3 downto 0 do Write(F, toHex[(C shr (i * 4)) and $0F]);
                Write(F, ' [', C:5, ']: ');
                For i := 3 downto 0 do Write(F, toHex[(Ord(Chars[C]) shr (i * 4)) and $0F]);
                Write(F, ' ');
                For i := 3 downto 0 do Write(F, toHex[(Ord(Chars2[C]) shr (i * 4)) and $0F]);
                WriteLn(F);
              End;
            WriteLn(F);
            WriteLn(F, '*end*');
          Finally
            CloseFile(F);
          End;
        End;
      End;
> hab nur die wichtigen Teile rübergezogen und in die alte Initprozedur eingefügt
> und konnte es jetzt noch nicht testen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 17 von 26   « Erste     7151617 1819     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
xml - MSXML alternative - Stack Overflow This thread Refback 28. Jun 2011 15:34

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 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