AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

von XML in Tabelle

Ein Thema von CalganX · begonnen am 22. Jul 2002 · letzter Beitrag vom 10. Dez 2004
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#25

Re: von XML in Tabelle

  Alt 14. Jul 2003, 15:03
Hätte ich fast vergessen. Quasi als Präventiv(vor)schlag (bevor die Frage kommt: wie kann man das prüfen?) hier eine Idee -

Mangels Rechner ohne XML weiß ich nicht, wie so ein Programm reagiert. Logisch, es wird nicht funktionieren ... Aber wahrscheinlich dürfte das System auch ein paar Fehler verursachen - vergleichbar mit dem statischen Laden von DLL-Funktionen, die es nicht gibt. Will sagen: die Fehler lassen sich evtl. nicht einfach unterbinden, weil die Typbibliothek keine dynamischen Zugriffe enthält. (Hab jedenfalls auf die Schnelle nichts davon gesehen.)

Um also ohne unschöne Fehlermeldungen auszukommen, empfehle ich die Prüfung in den Projektquelltext (*.dpr) zu schreiben und noch vor dem Erzeugen der Forms auszuführen:
Delphi-Quellcode:
uses
  { ... },
  Windows, Registry, ComObj, SysUtils;


function DoesXMLExist: boolean;
var
  reg : TRegistry;
  s : string;
begin
  Result := false;

  reg := TRegistry.Create(KEY_READ);
  if(reg <> nil) then
    with reg do try
      RootKey := HKEY_CLASSES_ROOT;

      if(OpenKey('CLSID\' + GuidToString(CLASS_DOMDocument40) +
        '\InProcServer32',false)) then
      try
        s := ReadString('');
        Result := (s <> '') and (fileexists(s));
      finally
        CloseKey;
      end;
    finally
      Free;
    end;
end;


begin
  if(not DoesXMLExist) then begin
    MessageBox(0,'Dieses Programm erfordert min. MS XML 4',nil,
      MB_ICONERROR or MB_OK);
    Halt;
  end;

  // hier würden dann die Forms erzeugt werden, usw.
  Application.Initialize;
  { ... }
end.
Der Wert CLASS_DOMDocument40 ergibt sich in diesem Fall aus sakuras Beispielcode. Die Funktion "CoDOMDocument40.Create" verweist auf eben diesen Wert, der eine GUID ({88D969C0-F192-11D4-A65F-0040963251E5}) enthält. Diese muss es als Registryschlüssel geben, und sie sollte den Pfad zur entsprechenden DLL (hier "msxml4.dll") enthalten. Dann dürfte alles in Butter sein.

Im Fehlerfall (sprich: XML ist nicht installiert, und das Interface existiert darum nicht) wird die Anwendung hoffentlich beendet, bevor irgendein Formular erzeugt wird und evtl. automatisch (OnCreate, usw.) auf XML-Dateien zuzugreifen versucht.
  Mit Zitat antworten Zitat
 


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:

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