AGB  ·  Datenschutz  ·  Impressum  







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

universaler record in Klasse

Ein Thema von mtbf40 · begonnen am 27. Jan 2020 · letzter Beitrag vom 30. Jan 2020
 
mtbf40

Registriert seit: 11. Okt 2013
3 Beiträge
 
#1

universaler record in Klasse

  Alt 27. Jan 2020, 18:30
Hallo,

ich habe folgendes Problem:

ich möchte verschiedene xml-Files, von verschiedenen Applikationen aus, parsen. Dafür schreibe ich eine Unit mit einer Klasse.
Die wichtigste Eigenschaft dabei soll ein Record werden, der die Struktur, generiert über eine XPATH Anweisung, abbildet.
Aus den einzelnen Applikationen sollen jetzt unterschiedlich aufgebaute Records übergeben werden.

Die XML und die jeweilige Applikation (mit den Records) sind aufeinander abgestimmt. Die XML-Unit soll weitesgehend generisch sein, wird aber auch funktionell auf verschiedene XML's
abgestimmt - d.h. ich übergebe den XML-Filename, XPATH-Pattern und einen speziellen Parameter - dieser dient dazu unterschiedliche Prozeduren/Funktionen aufzurufen die die speziellen Records zu füllen.

Das ganze sieht ungefähr so aus:
Bsp. XML
Code:
<CONFIG>
  <!-- Section general Properties -->
  <generalProperties>
    <credentials>
      <server>test_s1</server>
      <scp_user>xy</scp_user>
      <sshKey>key.ppk</sshKey>
    </credentials>
  </generalProperties>
  <Testers>
    <Tester Type='T1'>
      <Program>prog.exe</Program>
      <SPath>C:\Program Files\zap\bin</SPath>
      <dest>/unix/calibrationdata_mflex</dest>
      <cPath Path='Tester'>
        <ProgPath>C:\Program Files\Tester</ProgPath>
        <cFiles>CurrentConfig.txt</cFiles>
      </cPath>
      <cPath Path='DCCM'>
        <ProgPath>C:\Program Files\SupportBoard\DCCM</ProgPath>
        <cFiles>*.txt;*.csv</cFiles>
      </cPath>
      <cPath Path='POOL_Logs'>
        <ProgPath>C:\Program Files\POOL_Calibration_Logs</ProgPath>
        <cFiles>*</cFiles>
      </cPath>
    </Tester>
    <Tester Type='T2'>
       .
       .
       .
    </Tester>
  </Testers>

es gibt jetzt z.B. 2 Records
Delphi-Quellcode:
// Record 1
credR = record
    server : string;
    scp_user : string;
    sshKey : string;
   end;
  credPtr = ^credR;

// Record 2
  xmlRec = record
    Program : TStringList;
    cPath : cPathDict;
    SPath : string;
    dest : string;
  end;
  xmlPtr = ^xmlRec;
diese beiden Records befinden sich in einer Applikation
In der xml-Unit ist jetzt eine Klasse definiert wie:

Delphi-Quellcode:
  TXML = Class
  private
  FRC : Integer;
  FErrStr : string;
  debugS : string;
  FxmlF : PAnsiChar;
  FxmlPar : string;
  FPattern : PAnsiChar;
  Fdebug : TStrings;
  public
    constructor Create(dpar : string);
    Destructor Destroy; override;
    procedure/function readXML(XMLfile : xx; .. : yy...);

// xmlRec : ??????????
    property xmlFile : string Read FxmlF;
    property xmlPar : PAnsiChar Read FxmlPar;
    property rc : Integer Read FRC;
    property errStr : string Read FErrStr;
    property pattern : PAnsiChar Read FPattern;
    property debugL : TStrings Read Fdebug Write Fdebug;
  end;
Was ich jetzt gern machen würde wäre folgendes:
in der Applikation wird die Klasse initialisiert, der Record 1 wird übergeben und durch eine Procedure/Function in der Unit gefüllt
in einem späteren Schritt möchte ich über eine andere Procedure/Function den Record 2 füllen

Ich hoffe es ist einigermaßen verständlich

Meine Frage: ist dies möglich und wenn ja dann WIE??
  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 12:34 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 by Thomas Breitkreuz