Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

mehrdimensionales array übergeben

  Alt 6. Mär 2015, 10:12
Hallo DP,

mit folgender Prozedur möchte ich eine kleine XML Datei lesen und ein zwei dimensionales array befüllen, um es später in einer anderen Unit zu verwenden.

Delphi-Quellcode:
Procedure GetMessage(xml,targetNode:string;message_array:array of array of string);
var
  xmldoc : IXMLDocument;
  root: IXMLNode;
  msg_node:IXMLNode;
  i: Integer;
  x:integer;
  s: string;

begin
//XMLDocument erzeugen und xml-Datei laden
  xmlDoc := newXMLDocument;
  xmlDoc.LoadFromXML(xml);
  xmlDoc.Active := true;
  root := XMLDoc.DocumentElement;


  for i := 0 to xmlDoc.ChildNodes[root.NodeName].ChildNodes.Count -1 do
  begin
    s := xmlDoc.DocumentElement.ChildNodes[i].NodeName;
    x := CompareStr(s, targetNode);
    if x = 0 then //targetnode Node gefunden
    begin
        message_array[i,1] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('message').Text);
        message_array[i,2] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('type').Text);
        message_array[i,3] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('code').Text);
        message_array[i,4] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('parameter').Text);
        message_array[i,5] := (xmlDoc.DocumentElement.ChildNodes[i].ChildNodes.FindNode('id').Text);

    end;
  end;
end;
Ich wollte beide XML Knoten "displayMessages" und deren Unterbau in ein zweidimensionales array packen, aber der Compiler lässt mich kein mehrdimensionales array als Übergabeparameter der Prozedur erstellen:

Compilerfehler: Bezeichner erwartet, aber 'ARRAY' gefunden
Procedure GetMessage(xml,targetNode:string;message_array: array of array of string);
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Model xmlns="http://www.test.de">
   <displayMessages>
      <message>An error has occurred.</message>
      <type>UH</type>
      <code>99999</code>
   </displayMessages>
   <displayMessages>
      <message>Something is wrong</message>
      <type>UH</type>
      <code>999999</code>
      <parameter>HALLO_WELT</parameter>
      <id>30</id>      
   </displayMessages>
</Model>
Oder wäre ein Array von Records besser geeignet ?
Jaimy
DAoC 2.0 -> Camelot Unchained !
  Mit Zitat antworten Zitat