Thema: Delphi Probleme mit WideChar

Einzelnen Beitrag anzeigen

Canton

Registriert seit: 5. Dez 2003
6 Beiträge
 
Delphi 5 Professional
 
#1

Probleme mit WideChar

  Alt 5. Dez 2003, 13:24
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
  Mit Zitat antworten Zitat