AGB  ·  Datenschutz  ·  Impressum  







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

Array mit mehreren Strings auf einmal füllen

Ein Thema von Mike_ · begonnen am 18. Jan 2011 · letzter Beitrag vom 19. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#1

Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 21:33
Delphi-Version: 2007
Guten Abend,

es ist mir fast peinlich die Frage zu stellen, da Arrays m.E.n. zu den Grundfunktionen gehören, die selbst ein Anfänger wissen müsste bzw. man zur not ergoogeln sollte.

Weder google noch die Boardsuche hat mir dabei jedoch etwas wirklich gebracht.

Aufgabe:
Ich möchte mehrere Strings in ein Array packen.

"Problem":
Die Strings sind bereits dem Programm vorgegeben, so dass ich bisher als einzige Lösung folgendes tat:

[...]
var
ArrayWithData: Array of String;
begin
ArrayWithData[0] := 'a';
ArrayWithData[1] := 'b';
[...]
ArrayWithData[15] := 'c';


Aber dass muss doch auch effizienter gehen ?!
Ich habe im Internet auf einer FreePascal Seite folgenden Quellcode gefunden (Umgeformt auf mein Beispiel):

[...]
ArrayWithData := ('a','b','c');


Das "schluckt" Delphi 2007 aber nicht...
Ich bin ratlos... wie kann ich ein Array fortlaufend füllen ohne den Quellcode "künstlich" aufquillen zu lassen ?

EDIT://
Alternativ kam mir die Idee die Strings in eine StringList zu packen und von dort in ein Array zu verschieben... jedoch habe ich auch bei der Stringlist nur die Möglichkeit gefunden ein Item je Zeile hinzuzufügen...

Geändert von Mike_ (18. Jan 2011 um 21:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 21:35
Handelt es sich bei den Strings um Konstanten? Wenn ja, dann kannst du das Array sofort als Konstante definieren und an dieser Stelle einfach befüllen...
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 21:52
.. spräche etwas dagegen ein TStringList zu nutzen?
Delphi-Quellcode:
sl := TStringList.create;
sl.Delimiter := ' ';
sl.DelimitedText := 'a b c';
Nachtrag:
zum Schluss das Freigeben der StringList nicht vergessen

Grüße
Klaus
Klaus

Geändert von Klaus01 (18. Jan 2011 um 22:00 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 21:55
Zitat:
. spräche etwas dagegen ein TStringList zu nutzen?
Würde ich auch so mache; ist allerdings kein Array.
Markus Kinzler
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 21:58
Zitat:
. spräche etwas dagegen ein TStringList zu nutzen?
Würde ich auch so mache; ist allerdings kein Array.

..läst sich aber ähnlich wie ein Array ansprechen sl[0]..

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:00
Wie gesagt, habe ich beim Lesen der Frage auch an eine gedacht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:00
Hab hier grad mal ne Routine geschrieben, die ein String-Array mit Werten befüllt:

Delphi-Quellcode:
procedure FillArray(var AArray : array of string; const AValues : array of string);
var i1 : integer;
var i2 : integer;
begin
     //--
     i1 := Low(AArray);
     i2 := Low(AValues);
     //
     while (i1 <= High(AArray)) and (i2 <= High(AValues)) do
     begin
          AArray[i1] := AValues[i2];
          //
          i1 := i1 + 1;
          i2 := i2 + 1;
     end;
end;
Beispiel-Aufruf:

FillArray(ZuBefuellendesArray,['5','5','4']);

Am besten ist es dabei, wenn beide Arrays gleich groß sind. Man kann das ganze auch mit einem Dynamischen Array machen, dann könnte man in der Routine vorher per SetLength die Länge des zu befüllenden Arrays setzen und an die Anzahl der zu speichernden Werte anpassen.

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/

Geändert von patti (18. Jan 2011 um 22:03 Uhr)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:03
Hallo,

mit etwas weniger Schreibaufwand geht es so:
Delphi-Quellcode:
uses Types;

var
  A: TStringDynArray;
begin
  A := TStringDynArray.Create('a', 'b', 'c', 'd', 'e', 'f');
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:08
.. TStringDynArray kennt Delphi 2006 noch nicht,
ob das bei Delphi 2007 der Fall ist - keine Ahnung.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:10
Gab es den nicht schon vorher?
http://www.delphipraxis.net/186083-post3.html
Markus Kinzler
  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 11:00 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