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.