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 2 von 2     12   
Klaus01
Online

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

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:15
.. hatte vorhin "nur" in die Hilfe geschaut (da wird nichts gefunden).
Verwenden kann man es.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Mike_

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

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:17
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...
Danke, das ist ein guter Ansatz.

http://rvelthuis.de/articles/articles-openarr.html

Es funktioniert so auch und ist auf jeden Fall besser als die alte Methode


Allerdings ist es immer noch nicht optimal... denn es wird mir der Speicher etwas zugemüllt, obwohl ich gewisse Arrays nicht nutze.
_____

Dazu eine etwas weiterführende Erklärung:

Programm wird mit Parametern gestartet.
Je nach Parameter durchläuft er eine andere Routine.

Jetzt müsste ich für jeden Parameter der mitgegeben wird ein eigenes Array basteln mit den vorgegebenen Konstanten.

Hier ein Beispiel:

Delphi-Quellcode:
[...]

const
    ArrayOfFiles1: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles2: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles3: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);

[...]

procedure TForm1.XX;
[...]
begin

[...]
  if ParamStr(1) = 'aathen
  begin

[...]

    for i := 0 to Length(ArrayOf2CopyFiles1) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles[i]);
    end;
  end

  if ParamStr(1) = 'bbthen
  begin
[...]
    for i := 0 to Length(ArrayOf2CopyFiles2) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles2[i]);
    end;
  end;
end;
Gibt es nicht die Möglichkeit ein Array festzulegen, welches ich mit einer Zeile Code (Nämlich je nachdem welcher Parameter dem Programm mitgegeben wurde) füllen kann ?

Denn mit der jetzigen Methode würde er die Constanten immer in den Speicher schreiben, auch wenn er gar nicht drauf zugreift bzw. diese gar nicht braucht
(Und ich hätte > 20 Arrays, obwohl ich zur Laufzeit immer nur ein Einzige (!) benötige.)


EDIT1://
Ich war nicht mal mit dem Schreiben fertig, schon mehr als 4 Antworten zwischenzeitlich, der Hammer

Danke für die Function Patty.

EDIT2://
StringDynArray ist genau das, was ich gesucht habe, fabelhaft !
Klappt genau wie in deinem Beispiel

Wäre super wenn du mir sagst wie man auf so etwas kommen kann, wenn man es nicht kennt. (Ich suche meist 30min - 2 Std bevor ich eine Frage stelle, allerdings scheint meine Google suche nicht optimal zu sein... könnte man auch "so", auf die Antwort stoßen durch eine optimierte Suche wo anders ?

EDIT3://
Komme gar nicht zum abschicken, bei mir erscheint immer nur "Zwischenzeitlich sind neue Beiträge geschrieben worden."


Edit4://
Ich komme wirklich nicht zum abschicken des Posts...
"Zwischenzeitlich sind neue Beiträge geschrieben worden."

Ich kann nicht mehr

Edit5://
Jetzt hat das abschicken geklappt

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

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

AW: Array mit mehreren Strings auf einmal füllen

  Alt 18. Jan 2011, 22:52
Mike,

nach dem Array-Konstruktor habe ich gar nicht gesucht, ich bin eher zufällig in der Hilfedatei darüber gestolpert. Das müsste noch zu D2006-Zeiten gewesen sein.
Wertvolle Informationen erhält man auch beim Lesen von Blogs. Eine gute Startadresse ist DelphiFeeds.com.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Klaus01
Online

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

AW: Array mit mehreren Strings auf einmal füllen

  Alt 19. Jan 2011, 08:45
Guten Morgen,

dies hier, könnte vielleicht noch mit Hilfe einer Ini Datei vereinfacht werden:
Delphi-Quellcode:
c
onst
    ArrayOfFiles1: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles2: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles3: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);

[...]

procedure TForm1.XX;
[...]
begin

[...]
  if ParamStr(1) = 'aathen
  begin

[...]

    for i := 0 to Length(ArrayOf2CopyFiles1) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles[i]);
    end;
  end

  if ParamStr(1) = 'bbthen
  begin
[...]
    for i := 0 to Length(ArrayOf2CopyFiles2) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles2[i]);
    end;
  end;
end;
Delphi-Quellcode:

var
 iniFile: TIniFile;
 fileList: TStringList;

...
begin
  // ...
  try
    iniFile := TiniFile.create(PathToIniFile);
    fileList := TStringList.create;
    fileList.delimetedText := iniFile.ReadString(Paramstr(1),'FileList','');
    for i:=0 to fileList.count -1 do
      AndereProzedurVonMir(fileList[i]);
  finally
    iniFile.free;
    fileList.free;
  end;
  // ...
end;
Wobei der Aufbau der Ini-Datei dann so aussehen müsste:
Code:
[aa]
  FileList=aa bb cc dd ee ff gg
[bb]
  FileList=ab bc cd de ef fg gh
[cc]
  ...
.. nur mal so ein Gedanke

Grüße
Klaus
Klaus

Geändert von Klaus01 (19. Jan 2011 um 08:48 Uhr)
  Mit Zitat antworten Zitat
Mike_

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

AW: Array mit mehreren Strings auf einmal füllen

  Alt 19. Jan 2011, 22:27
Guten Morgen,

dies hier, könnte vielleicht noch mit Hilfe einer Ini Datei vereinfacht werden:
Delphi-Quellcode:
c
onst
    ArrayOfFiles1: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles2: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);
    ArrayOfFiles3: array[1..12] of String = (ab, ac, ad, ab, gs, hw,
                                       qa, jq, wh, hw, qa, hw);

[...]

procedure TForm1.XX;
[...]
begin

[...]
  if ParamStr(1) = 'aathen
  begin

[...]

    for i := 0 to Length(ArrayOf2CopyFiles1) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles[i]);
    end;
  end

  if ParamStr(1) = 'bbthen
  begin
[...]
    for i := 0 to Length(ArrayOf2CopyFiles2) do
    begin
      AndereProzedurVonMir(ArrayOf2CopyFiles2[i]);
    end;
  end;
end;
Delphi-Quellcode:

var
 iniFile: TIniFile;
 fileList: TStringList;

...
begin
  // ...
  try
    iniFile := TiniFile.create(PathToIniFile);
    fileList := TStringList.create;
    fileList.delimetedText := iniFile.ReadString(Paramstr(1),'FileList','');
    for i:=0 to fileList.count -1 do
      AndereProzedurVonMir(fileList[i]);
  finally
    iniFile.free;
    fileList.free;
  end;
  // ...
end;
Wobei der Aufbau der Ini-Datei dann so aussehen müsste:
Code:
[aa]
  FileList=aa bb cc dd ee ff gg
[bb]
  FileList=ab bc cd de ef fg gh
[cc]
  ...
.. nur mal so ein Gedanke

Grüße
Klaus
Klaus,

bist du ein Hellseher ?
Genau das hatte ich heute vor einzubauen und du lieferst gleich noch den Quellcode mit.

Fabelhaft !
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:39 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