AGB  ·  Datenschutz  ·  Impressum  







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

Dynamische Arrays "verketten"

Ein Thema von Dennis07 · begonnen am 3. Feb 2015 · letzter Beitrag vom 6. Feb 2015
 
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#1

Dynamische Arrays "verketten"

  Alt 3. Feb 2015, 21:01
Hallo, ich bins mal wieder.
Ich will folgende ein typisiertes dynamisches array von Integer-Werten an ein anderes anhängen.
Allerdings ist meine Funktion rekursiv. ("TIntegerArray" ist deklariert als "array of Integer")

Delphi-Quellcode:
//Diese Funktion soll mir alle Positionen eines SubStrings in einem String zurückliefern.
//Bitte nicht fragen, wieso ich nicht Gebrauch vom "Offset"-Parameter der
//"Pos(...)"-Funktion mache, ich brauche Abwärtskompatibilität bis einschl. D7.

function MultiPos(const SubStr, Str: String; Offset: Integer = 1): TIntegerArray;
var
  Temp: PChar;
  Position: Integer;
  Further: TIntegerArray;
begin
  SetLength(Result,0);
  if (Offset < 1) or (Offset > (Length(Str) - Length(SubStr))) then
  begin
    Exit;
  end;
  Temp := @Str[OffSet];
  Position := Pos(SubStr,String(Temp));
  if Position <> 0 then
  begin
    SetLength(Result,1);
    Result[0] := Position + Offset - 1;
    Inc(Temp,Position + Length(SubStr) - 1);
    Further := MultiPos(SubStr,Str,Offset + Position + Length(SubStr) - 1);
    if Length(Further) <> 0 then
    begin
      SetLength(Result,1 + Length(Further));
      Move(Further[0],Result[1],SizeOf(Further){Length(Further) - 1});
    end;
  end;
end;
Wenn ich die Funktion jetzt teste, gibt der mir für die ersten beiden Positionen richtige Werte aus. Für alle anderen jedoch erhalte ich nur noch Nullen. Ich vermute, dass es an relativer Adressierung von arrays liegen könnte, die durch "System.Move(...)" die folgenden Kettenglieder unbrauchbar macht, bin mir aber nicht ganz sicher. Und noch weniger weiß ich, wie ich es beheben sollte.
Dennis

Geändert von Dennis07 ( 3. Feb 2015 um 21:06 Uhr)
  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 23:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz