Hallo erstmal,
ich habe da ein kleines problem ich Versuche einem WideChar einen String zu zuweisen.
Diese funktioniert auch wunderbar wenn ich es einzeln mache. Da ich aber Beide Variablen dynamisch habe versuche ich es über eine Schleife. Was für mich eine ziemlich verwirrende Wirkung hat da nach dem zweiten index er damit beginnt mir sowohl den aktuelle index zu beschreiben und den ersten (also 0)
aber genug der langen worte hier erstmal der Quelltext:
Delphi-Quellcode:
procedure AddItemsClick;
var
i, y, x, z, WertItemID : integer;
HRes : HRESULT;
sItemID : array of pWideChar;
ItemDef : array of OPCITEMDEF;
Results : POPCITEMRESULTARRAY;
Errors : PResultList;
Test : array of String;
begin
AnzahlEintraege:=0;//erstam anzahl einträge auf 0 setzten
WertItemID:=0; //auch erstmal auf 0 setzen
//Benötigte länge der Arrays ermitteln
for x:=low (NewItems) to high (NewItems) do
Begin
for y:=low(NewItems[x]) to high (NewItems[x]) do
Begin
AnzahlEintraege:=AnzahlEintraege+Length(NewItems[x,y])//Um anzahl an Einträgen zu ermitteln
end;
end;
SetLength(ItemDef, AnzahlEintraege);
SetLength(sItemID, AnzahlEintraege);
for x:=low(NewItems) to high (NewItems) do
Begin
for y:=Low(NewItems[x]) to high (NewItems[x]) do
Begin
for z:=Low(NewItems[x,y]) to high(NewItems[x,y]) do
Begin
SItemID[WertItemID]:=pWideChar(WideString(NewItmes[x,y,z]));
WertItemID:=WertItemID+1;
end;
end;
end;
So wie ihr vielleicht gesehen habt ist Die Variable NewItems(die globala als array of array of array of String) definiert ist ein Mehrfachdimensonales Array. Und dadurch das sich x,y,z in den drei schleifen Ständig änder so Brfürchte ich mal das die Pointer zu diesen Strings sich ändern und sich dadurch die Werte Verändern. Aber so recht habe ich das Mit den Null-Terminirten Strings nicht verstanden. (Da die gleichen Schleifen auch wunderbar woanders tun allerdings schreiben sie da auch auf "Normale" Strings).
Habe auch schon Versucht mir erst nen TempString zu bilden der die ganzen Werte nur in einer Dimmension fast (also nur array of String) und diese dann dem WideChar zuweise aber das hat auch nicht funktioniert.
Also hat jemand ne Idee? Ich bin langsam kurz vorm