Einzelnen Beitrag anzeigen

Joerginger

Registriert seit: 22. Jan 2009
Ort: Wien
38 Beiträge
 
Delphi 7 Enterprise
 
#1

Auf Klassenvariablen indiziert zugreifen?

  Alt 22. Okt 2013, 09:32
Delphi-Version: 2010
Hallo Delpi-Mitbrüder (und Schwestern),

ich habe eine von TRemotable abgeleitete Klasse Article

Code:
Article = class(TRemotable) //DURCH WSDL-IMPORT SO BENAMST...
  private
    FOXID: TXSString;
    FOXSHOPID: TXSString;
    FOXPARENTID: TXSString;
    FOXACTIVE: TXSBoolean;
    //geht natürlich elendslang weiter... alle Felder aus OXID Artikelstamm
Wie unschwer zu erkennen ist hat das Teil generell keine Variablen im Einsatz, sondern nur die Delphi-nilable-Variante, wiederum Klassen, im Einsatz.

Wenn ich jetzt einen Artikel in den Shop hochschiessen möchte mach ich:

Code:
  //ARRAY UM 1 SATZ VERGRÖSSERN
  setLength(aArt,iDX+1);
  aArt[iDX]:=Article.create; //ARTIKEL BASTELN
  aArt[iDX].OXID:=TXSstring.Create; //ERSTES FELD BASTELN
  aArt[iDX].OXID.XSToNative('05848170643ab0deb9914566391c0c63'); //WERT ZUWEISEN
  aArt[iDX].OXTitle:=TXSstring.Create; ...
  aArt[iDX].OXTitle.XSToNative('Tescht mit ÄÖÜäöüß uns allen Spielis by EJ...');
  aArt[iDX].OXActive:=TXSBoolean.Create;
  aArt[iDX].OXActive.asBoolean:=True;
  aArt[iDX].OXPRICE:=TXSDecimal.Create;
  aArt[iDX].OXPRICE.XSToNative(SoapFloatToStr(6.99));
  aArt[iDX].OXVAT:=TXSDecimal.Create;
  aArt[iDX].OXVAT.XSToNative(SoapFloatToStr(-1));
... iss natürlich möglich und funktioniert, ich würd mir aber gerne eine Procedure basteln (ungefähr so lautend)
Code:
//NUR ALS BEISPIEL! VARIABLE = ICH WEISS NICHT WAS ICH VERWENDEN SOLL...
procedure OXWriteField(Feldname:variable;iDX:integer;sStr:ansiString);
//iDX = INDEX IM ARRAY
//sStr = WERT ZU SCHREIBEN
die ich dann z.B. mit
Code:
OXWriteField('OXTITLE',1,'Des Artikels neue Bezeichnung');
aufrufen kann und die dann das jeweilige Feld instanziert und mit TX richtig befüllt. Im Endeffekt würd ich es dann noch 3 x overloaden, damit ich boolean, decimal, integer und string richtig abhandeln kann.
aArt ist Globales Array, von daher auch in der procedure im Zugriff...

Nur: ich kriegs nicht gebacken...

wenn ich aArt[iDX].sFN ansprechen will meckert D2010 berechtigterweise, dass es sFN nicht kennt. Mit (sFN) bzw. [sFN] tuts genausowenig. Gibts doch sicher einen ganz einfachen Weg dafür, der mit grad nicht einfällt...

Bin zur Zeit ohne

GLG,

Erwin J.
  Mit Zitat antworten Zitat