AGB  ·  Datenschutz  ·  Impressum  







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

Arrays zusammenfügen

Offene Frage von "himitsu"
Ein Thema von Spanky · begonnen am 5. Mär 2009 · letzter Beitrag vom 2. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Spanky
Spanky

Registriert seit: 18. Nov 2007
39 Beiträge
 
Turbo Delphi für Win32
 
#1

Arrays zusammenfügen

  Alt 5. Mär 2009, 15:45
Hallo,

ich nutze die Explode-Funktion aus der Code Library. Diese Funktion rufe ich zwei Mal auf. Es wird jeweils ein Array zurückgegeben. Kann man die beiden Arrays, die zurückgegeben werden, mit einer Funktion zusammenfügen?
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 15:55
Ja, kann man. Brauchst doch nur ein neues Array machen, wo du die beiden Teile nacheinander anhängst.

Stichworte: SetLength, for-Schleife, ...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 15:57
Das erste Array mit SetLength auf die richtige Länge bringen, dann den Inhalt des zweiten mit CopyMemory rüberschnippsen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 16:02
Zitat von jaenicke:
Das erste Array mit SetLength auf die richtige Länge bringen, dann den Inhalt des zweiten mit CopyMemory rüberschnippsen.
Oder mit Move. Finde ich bequemer. Da kann man sich die @s sparen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 16:05
So meinte ich das:
Delphi-Quellcode:
var
  a, b: array of Integer;
  i, OldSize: Integer;
begin
  // a und b als Beispiele erstellen
  SetLength(a, 5);
  SetLength(b, 4);
  for i := Low(a) to High(a) do
    a[i] := i;
  for i := Low(b) to High(b) do
    b[i] := i*10;

  // a vergrößern und b reinkopieren
  if Length(b) > 0 then
  begin
    OldSize := Length(a);
    SetLength(a, OldSize + Length(b));
    CopyMemory(@a[OldSize], @b[0], Length(b) * SizeOf(b[0]));
  end;

  for i := Low(a) to High(a) do
    ShowMessage(InttoStr(a[i]));
Mit Move müsste ich selber erst schauen wie das aussieht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 16:20
Hi,

So ginge das mit Move:

Delphi-Quellcode:
var old: Integer;
begin
  old := Length(ArrayB);
  SetLength(ArrayB,old+Length(ArrayA);
  Move(ArrayA[0],ArrayB[old],Length(ArrayA)*SizeOf(ArrayA[0]));
end;
Ich hoffe ich hab keinen Fehler drin
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 16:23
Seid ihr jäckig?

Strings kopiert man nicht per Move und Co.
zumindestens nicht ohne gewisse Dinge zu beachten.

Explode liefert ein Array of String
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Arrays zusammenfügen

  Alt 5. Mär 2009, 16:29
Stimmt, dass es Strings sind und es damit einen Reference Counter gibt, daran habe ich nicht gedacht.

Dann bleibt noch mit for kopieren oder die Strings gleich in das richtige Array zu legen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Arrays zusammenfügen

  Alt 6. Mär 2009, 16:29
am besten so(Nicht getestet):
Delphi-Quellcode:
procedure AddToArray(var aArray:array of string; const aSoruce:Array of String);
var
  i,c1,c2:Integer;
begin
  c1:=Lenght(aSoruce);
  c2:=Lenght(aArray);
  SetLenght(aArray,c1+c2+1);

  for i:=0 to c1 do begin
    aArray[c2+i]:=aSoruce[i];
  end;
end;
so müsste das eigentlich klappen.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Root2k

Registriert seit: 7. Jun 2011
Ort: Ulm
49 Beiträge
 
Delphi XE Enterprise
 
#10

AW: Arrays zusammenfügen

  Alt 1. Nov 2011, 16:14
Da dieser Eintrag bei diversen Suchmaschinen an oberster Stelle landet, wenn man nach "delphi zwei arrays verbinden" sucht, will ich die angegebene Methode noch korrigieren.

Delphi-Quellcode:
procedure AddToArray(var _alleStrings:Array of String; const _neueStrings:Array of String);
var
  i,c1,c2:Integer;
begin
  c1 := Length(_alleStrings);
  c2 := Length(_neueStrings);
  SetLength(_alleStrings, c1 + c2);

  for i := 0 to c2-1 do
  begin
    _alleStrings[c1 + i] := _neueStrings[i];
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:41 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