Delphi-PRAXiS
Seite 4 von 8   « Erste     234 56     Letzte » 

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 22. Jul 2008 16:45

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von toyoman
jetzt lass mir doch meine geile funktion. die geb ich nicht her.
die kommt aus meiner spezial unit mit den ganzen gesammelten werken....

...welche vermutlich alle irgendwoher kopiert sind.

Ausserdem sind die meisten Delphi-Funktionen sehr optimiert und tausendfach im Einsatz.
Ich such lieber ne halbe Stunde in der Delphi-Hilfe, bevor ich was selber in Angriff nehme.
Wenn ich dann nichts finde, kann ich immernoch woanderst suchen oder mir die Finger wundtippen.

ja das rad neu erfinden macht ja keinen sinn.
aber viele funktionen sind auf meine bedürfnisse abgestimmt und keine standard dinger. so dass ich sie halt dennoch selber hingetippt hab.
ich tipp eigentlich gerne....

toyoman 22. Jul 2008 16:52

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von toyoman
getpath ist eine funktion von mir welche den aktuellen programmpfad zurückgibt (getestet und funktioniert 100pro) :)

Warum immer so kompliziert?
Dies ist auch nicht viel länger und funktioniert auf jeden Fall:
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)

übrigens meine getpath funktion:


Delphi-Quellcode:
function getPath: TFileName;
begin
   result:= ExtractFilePath(ParamStr(0));
end;
für mich ist es einfach einfacher getpath zu schreiben ... darum hab ich das so gemacht.
die unit mit meinen funktionen und prozeduren bind ich eh in jedes programm ein daher kann ich immer überall alles gleich machen und habe somit meinen eigenen standard in der programmierung.

Morphie 22. Jul 2008 16:58

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von toyoman
Zitat:

Zitat von Morphie
Zeig mal deinen jetzigen Code, du hast den ja sicher ein wenig abgewandelt...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  anzahl: integer;
  wnode: IXMLNode;
  i: integer;

begin
   XMLDocument1.LoadFromFile(getpath+'test.xml');
   anzahl:=XMLDocument1.DocumentElement.Attributes['totalNumber'];
   for i := 0 to anzahl-1 do
   begin
     showmessage(XMLDocument1.DocumentElement.ChildNodes.Nodes[i].Attributes['path'])
   end;

end;
getpath ist eine funktion von mir welche den aktuellen programmpfad zurückgibt (getestet und funktioniert 100pro) :)


hab mir den code nun 1:1 kopiert und getpath durch ExtractFilePath(ParamStr(0)) ersetzt. Sollte also eig. alles übereinstimmen...

klappt ohne Probleme...
Zeig doch nochmal den Inhalt der test.xml, da ist garantiert der Wurm drinne

toyoman 22. Jul 2008 17:02

Re: Ideen für spezielle Stringbearbeitung
 
hab mir den code nun 1:1 kopiert und getpath durch ExtractFilePath(ParamStr(0)) ersetzt. Sollte also eig. alles übereinstimmen...

klappt ohne Probleme...
Zeig doch nochmal den Inhalt der test.xml, da ist garantiert der Wurm drinne[/quote]

der string ist riesengross und auf einer zeile im file drin...
gibt das evtl. probleme? so ist es halt nunmal in der DB drin.... ich kann das nicht ändern.

kann dir das file von hier auch nicht raufladen weil das hier nicht möglich ist (in der firma).

das file fängt so an:

DWUser version="5.1.0.1" uid="10" oid="1"

mittendrin kommt dann das mit den baskets und am schluss:

startDocuWareMinimized="false" /></DWUser>

mach jetzt auch feierabend, und mach morgen weiter!

danke erstmal

Morphie 22. Jul 2008 17:20

Re: Ideen für spezielle Stringbearbeitung
 
Na da musst du den Code auch deiner XML-Datei anpassen... Mein Beispiel war eben nur für den kurzen Ausschnitt aus deinem 1. Post gedacht...

Deine Meldung
Zitat:

Variante des Typs (Null) konnte nicht in Typ (Integer) konvertiert werden
kommt dadurch zustande, dass das Attribute "path" im DocumentElement (Also dem 1. Element / dem Root / dem Parent der Child-elemente ;-) ) gar nicht existiert und es deswegen Null zurückliefert.

An deiner Stelle würde ich vorher mit
Delphi-Quellcode:
XMLDocument1.DocumentElement.HasAttribute('')
und
Delphi-Quellcode:
XMLDocument1.DocumentElement.nodename
usw. erstmal überprüfen, WO du dich grad überhaupt in deiner XML-Struktur befindest...

toyoman 23. Jul 2008 10:03

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von Morphie
Na da musst du den Code auch deiner XML-Datei anpassen... Mein Beispiel war eben nur für den kurzen Ausschnitt aus deinem 1. Post gedacht...

Deine Meldung
Zitat:

Variante des Typs (Null) konnte nicht in Typ (Integer) konvertiert werden
kommt dadurch zustande, dass das Attribute "path" im DocumentElement (Also dem 1. Element / dem Root / dem Parent der Child-elemente ;-) ) gar nicht existiert und es deswegen Null zurückliefert.

An deiner Stelle würde ich vorher mit
Delphi-Quellcode:
XMLDocument1.DocumentElement.HasAttribute('')
und
Delphi-Quellcode:
XMLDocument1.DocumentElement.nodename
usw. erstmal überprüfen, WO du dich grad überhaupt in deiner XML-Struktur befindest...

und wo muss ich das einbauen? - in die schlaufe?

toyoman 23. Jul 2008 10:42

Re: Ideen für spezielle Stringbearbeitung
 
hier noch der ganze XML String:

XML-Code:
<DWUser version="5.1.0.1" uid="10" oid="1" dw4uid="username" guid="094ae9eb-3f39-42e6-a33e-6f2658f8468e" oguid="6d807b13-1ecf-47a9-b31f-1b1134bd35e5" name="username" active="true" eMail="mailadresse" distribution="NetworkStartup" oldIniSettingsForDw="[bibl_00995018.184_RESULT]&#xD;&#xA;COLFIXED=0&#xD;&#xA;COLUMNWIDTHS=0026000129001730006800034002230007500036&#xD;&#xA;[0ablage]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[4126528203dw5waste]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[banken_00963233.089_RESULT]&#xD;&#xA;COLFIXED=0&#xD;&#xA;COLUMNWIDTHS=00039000610003400036000360018100148001320003300036000360003600036000130003600036000360003600036000360003600036&#xD;&#xA;[687238641test]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[personal_12841424.261_RESULT]&#xD;&#xA;COLFIXED=0&#xD;&#xA;COLUMNWIDTHS=00053000510003100029000610005800097000380005800093&#xD;&#xA;[projekt_12841424.368_RESULT]&#xD;&#xA;COLFIXED=0&#xD;&#xA;COLUMNWIDTHS=001210006300061000320003200013&#xD;&#xA;[780170000dw5waste]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[0scanner]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[504390781papierkorb]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[85362843user]&#xD;&#xA;DISPLAYMODE=0&#xD;&#xA;[1950194user]&#xD;&#xA;DISPLAYMODE=1&#xD;&#xA;" oldIniSettingsForViewer="[Dacs4]&#xD;&#xA;LastOCRSetting=&#xD;&#xA;LastBarcodeSetting=&#xD;&#xA;" securityLevel="Normal"><Registered><FileCabinets totalNumber="5"><FileCabinet guid="1d8ea7b5-977c-4c08-b809-3ce0c67b9157" dbdatetime="00995018.184" path="C:\Documents and Settings\username\Local Settings\Temp\CtSCache\ContentServer\username\1d8ea7b5-977c-4c08-b809-3ce0c67b9157\Bibl.ADF" opened="true" isUserAssigned="false" /><FileCabinet guid="abcd0060-e615-4703-a0e2-a07ed99b13b0" dbdatetime="12841424.261" path="C:\Documents and Settings\username\Local Settings\Temp\CtSCache\ContentServer\username\abcd0060-e615-4703-a0e2-a07ed99b13b0\Personal.ADF" opened="true" isUserAssigned="false" /><FileCabinet guid="8e1e9306-d756-434e-ba64-dce190f8ba6e" dbdatetime="12841424.368" path="C:\Documents and Settings\username\Local Settings\Temp\CtSCache\ContentServer\username\8e1e9306-d756-434e-ba64-dce190f8ba6e\Projekt.ADF" opened="true" isUserAssigned="false" /><FileCabinet guid="c339340c-43ed-4769-b463-7ada38d8ba3e" dbdatetime="12841424.549" path="C:\Documents and Settings\username\Local Settings\Temp\CtSCache\ContentServer\username\c339340c-43ed-4769-b463-7ada38d8ba3e\Interess.ADF" opened="true" isUserAssigned="false" /><FileCabinet guid="b4a87a2f-c6ed-46a8-9d7c-91b619fc0050" dbdatetime="00963233.089" path="C:\Documents and Settings\username\Local Settings\Temp\CtSCache\ContentServer\username\b4a87a2f-c6ed-46a8-9d7c-91b619fc0050\banken.ADF" opened="true" isUserAssigned="false" /></FileCabinets><Baskets totalNumber="3"><Basket path="c:\temp\user\" opened="false" isUserAssigned="true" /><Basket path="c:\temp\user\" opened="false" isUserAssigned="true" /><Basket path="c:\daten\Docuware\Ablage\" opened="false" isUserAssigned="false" /></Baskets></Registered><MainWindow archivesVisible="true" basketsVisible="true" hierarchiesVisible="true" destBasketMdiState="false" defaultExportMode="0" exportMultiPageTiff="false" exportMergeOverlay="false" defaultImportMode="0" toolbarSize="false" activeImport="false" pendingBox="false" /><Login useDwLogin="true" /><Misc pathOfTrashCan="c:\daten\Docuware\Papierkorb" startDocuWareMinimized="false" /></DWUser>

Morphie 23. Jul 2008 11:39

Re: Ideen für spezielle Stringbearbeitung
 
Sehen alle XML-Strings in deiner Datenbank in etwa so aus, oder gibt es da unterschiede?
Ich meine von der Struktur her...

marabu 23. Jul 2008 11:53

Re: Ideen für spezielle Stringbearbeitung
 
Hallo,

hier eine kleine Starthilfe:

Delphi-Quellcode:
uses
  MSXML2;

function CreateDocument(var doc: IXMLDOMDocument2; const markup: string): Boolean;
begin
  doc := CoDomDocument.Create;
  doc.async := False;
  Result := doc.loadXML(markup);
end;

procedure TDemoForm.TestButtonClick(Sender: TObject);
const
  MARKUP
    = '<Baskets totalNumber="3">'
    + '<Basket path="W:\briefkorb\test\" opened="false" isUserAssigned="true" />'
    + '<Basket path="W:\briefkorb\test1\" opened="false" isUserAssigned="true" />'
    + '<Basket path="H:\daten\Docuware\Ablage\" opened="false" isUserAssigned="false" />'
    + '</Baskets> '
    ;
  XPATH = '//Basket[%d]/@path';
var
  doc: IXMLDOMDocument2;
  n: IXMLDOMNode;
begin
  if CreateDocument(doc, MARKUP) then
  begin
    n := doc.selectSingleNode(Format(XPATH, [1]));
    ShowMessage(VarToStr(n.nodeValue));
    n.nodeValue := ExtractFilePath(ParamStr(0));
    ShowMessage(doc.xml);
  end else ShowMessage(doc.parseError.reason);
end;
Statt MARKUP kann auch der Text aus der Datenbank eingesetzt werden.

Grüße vom marabu

toyoman 23. Jul 2008 16:12

Re: Ideen für spezielle Stringbearbeitung
 
Zitat:

Zitat von Morphie
Sehen alle XML-Strings in deiner Datenbank in etwa so aus, oder gibt es da unterschiede?
Ich meine von der Struktur her...

sollte immer gleich sein, denk ich.. hab aber nicht alle durchgesehen.
was sicher variert ist die anzahl von baskets z.b....


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:47 Uhr.
Seite 4 von 8   « Erste     234 56     Letzte » 

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