Delphi-PRAXiS
Seite 8 von 8   « Erste     678

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ideen für spezielle Stringbearbeitung (https://www.delphipraxis.net/117587-ideen-fuer-spezielle-stringbearbeitung.html)

toyoman 6. Aug 2008 08:26

Re: Ideen für spezielle Stringbearbeitung
 
Erfolgserlebnis:

Delphi-Quellcode:
procedure Tfrmxml.btnmutClick(Sender: TObject);
const
  XPATH = '//Basket[%d]/@path';
  XANZAHL = '//Baskets/@totalNumber';
var
  doc: IXMLDOMDocument2;
  n: IXMLDOMNode;
  sqltext:string;
  s:string;
begin
  s:=chr(39); // Hochkomma
  // Briefkorb Pfad speichern
  if CreateDocument(doc, dbMemo1.Text) then
  begin
    n := doc.selectSingleNode(Format(XPATH, [strtoint(ednummer.text)-1]));
    n.nodeValue:=(edpfad.text);
//    sqltext:=stringreplace(sql_update_xml,'$benutzername',s+edbenutzername.text+s,[rfIgnoreCase]);
//    sqltext:=stringreplace(sqltext,'$xml',s+doc.xml+s,[rfIgnoreCase]);
    datamodule2005.ADOQuery3.SQL.Text:=sql_update_xml;
    datamodule2005.ADOQuery3.Parameters.ParamByName('xml').Value:=doc.xml;
    datamodule2005.ADOQuery3.Parameters.ParamByName('benutzername').Value:=edbenutzername.text;
    showmessage(datamodule2005.ADOQuery3.SQL.Text);
    datamodule2005.ADOQuery3.ExecSQL;
  end else ShowParseError(doc.parseError);
end;
Danke für den Tipp marabu. Mithilfe von Parametern scheint sich das Problem in Luft aufgelöst zu haben. Ist mir zwar nicht klar warum, aber ok.
Was ich noch ändern musste: doc.xml verwenden und nicht in Hochkomma in die DB setzen.

toyoman 6. Aug 2008 11:43

Re: Ideen für spezielle Stringbearbeitung
 
Bei mir ist jetzt noch die Frage aufgetaucht:
Wenn ein Benutzer keinen Basket im XML definiert hat (totalNumber=0). Wie kann ich diesen dann eintragen/speichern/eröffnen?
Hast du da ein Beispiel?

Das wäre noch das Tüpfli auf dem i - wie wir in der CH sagen :)

marabu 6. Aug 2008 14:19

Re: Ideen für spezielle Stringbearbeitung
 
Sali,

luegsch emal:

Delphi-Quellcode:
procedure AddBasket(doc: IXMLDOMDocument2; const path, opened, isUserAssigned: string);
const
  xpBaskets = '//Baskets';
  tagBasket = 'Basket';
  atPath = 'path';
  atOpened = 'opened';
  atIsUserAssigned = 'isUserAssigned';
var
  e: IXMLDOMElement;
begin
  e := doc.selectSingleNode(xpBaskets) as IXMLDOMElement;
  if Assigned(e) then
    with e.appendChild(doc.createElement(tagBasket))
    as IXMLDOMElement do
    begin
      setAttribute(atPath, path);
      setAttribute(atOpened, opened);
      setAttribute(atIsUserAssigned, isUserAssigned);
    end;
end;
Tschüss

toyoman 6. Aug 2008 16:30

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von marabu
Sali,

luegsch emal:

Delphi-Quellcode:
procedure AddBasket(doc: IXMLDOMDocument2; const path, opened, isUserAssigned: string);
const
  xpBaskets = '//Baskets';
  tagBasket = 'Basket';
  atPath = 'path';
  atOpened = 'opened';
  atIsUserAssigned = 'isUserAssigned';
var
  e: IXMLDOMElement;
begin
  e := doc.selectSingleNode(xpBaskets) as IXMLDOMElement;
  if Assigned(e) then
    with e.appendChild(doc.createElement(tagBasket))
    as IXMLDOMElement do
    begin
      setAttribute(atPath, path);
      setAttribute(atOpened, opened);
      setAttribute(atIsUserAssigned, isUserAssigned);
    end;
end;
Tschüss

gruäzi

scheinbar hab ich wieder was missverstanden oder falsch gemacht. denn es passiert gar nix. habe es folgendermassen in einer prozedur verpackt:

Delphi-Quellcode:
procedure Tfrmxml.btnneubClick(Sender: TObject);
var
  doc: IXMLDOMDocument2;
begin
  if CreateDocument(doc, dbMemo1.Text) then
  begin
    AddBasket(doc,edpfad.text,'true','true');
    datamodule2005.ADOQuery3.SQL.Text:=sql_update_xml;
    datamodule2005.ADOQuery3.Parameters.ParamByName('xml').Value:=doc.xml;
    datamodule2005.ADOQuery3.Parameters.ParamByName('benutzername').Value:=edbenutzername.text;
    datamodule2005.ADOQuery3.ExecSQL;
    btnneu.click; // Neu!
  end else ShowParseError(doc.parseError);
end;
wie gesagt, wird leider nichts gespeichert. wahrscheinlich wieder eine kleine sache??

toyoman 6. Aug 2008 16:42

Re: Ideen für spezielle Stringbearbeitung
 
XML to String.
Gibts sowas eigentlich? Bzw. doc (IXMLDOMDocument2) to String.

doc.xml...
mensch ist wohl schon spät. sorry


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:19 Uhr.
Seite 8 von 8   « Erste     678

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