AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein 2-Dimensionale Stringlisten übergeben

2-Dimensionale Stringlisten übergeben

Ein Thema von Incocnito · begonnen am 5. Sep 2024 · letzter Beitrag vom 22. Sep 2024
Antwort Antwort
Incocnito

Registriert seit: 28. Nov 2016
229 Beiträge
 
#1

AW: 2-Dimensionale Stringlisten übergeben

  Alt 18. Sep 2024, 07:32
Es ist ja kein Problem records / objekte zu erstelllen, die diese Daten abbilden.

Was geht ist:

Delphi-Quellcode:
type
  TAbcPair = Array [0..1] of string;
  TSomeList = Array of TAbcPair;
Procedure Test(const slValues : TSomeList);
...
Procedure DoSomething();
var
  liste : TSomeList;
begin
  SetLength(liste, 2);
  liste[0][0] := '1';
  liste[1][0] := '2';
  liste[0][1] := '3';
  liste[1][1] := '4';
  Test(liste);
end;
aber ich will ja nicht den Umweg über eine (oder gar mehrere Variablen) gehen,
sondern einfach nur:

Delphi-Quellcode:
Procedure DoSomething();
begin
  Test([['1', '2'], ['3', '4']]);
end;
und das geht nicht.

Da aber

Delphi-Quellcode:
Procedure Text(vals : TDynStringArray);
...
Procedure DoSomething();
begin
  Test(['1', '2', '3', '4']);
end;
geht, verstehe ich nicht, warum ich 2-dimensionale Listen nicht zum Laufen bringen kann.
Generell scheint es doch zu gehen mit Listen als Parameter diese direkt zu füllen.
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: 2-Dimensionale Stringlisten übergeben

  Alt 18. Sep 2024, 08:19
Kompiliert in Delphi 11.3 und spuckt die Strings aus:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
    System.SysUtils;

procedure Test(const A2DStringArray: TArray<TArray<string>>);
begin
     for var SingleStringArray in A2DStringArray do
     begin
         for var SingleString in SingleStringArray do
         begin
            Writeln(SingleString);
         end;
     end;
end;

procedure DoSomething();
begin
    Test([['1', '2'], ['3', '4'], ['5', '6'], ['Auto', 'Baum'], ['Steuererklärung', 'Die Waldfee']]);
end;

begin
    try
        DoSomething
    except
        on E: Exception do
            Writeln(E.ClassName, ': ', E.Message);
    end;
    Readln;
end.
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
229 Beiträge
 
#3

AW: 2-Dimensionale Stringlisten übergeben

  Alt 18. Sep 2024, 12:25
Delphi erlaubt hier aber nur Listen von variabler Länge, nicht "Array [0..1] of string".
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  TAbcPair = Array [0..1] of string;
  TSomeList = Array of TAbcPair;

procedure Test(const A2DStringArray: TSomeList);
begin
  for var SingleStringArray in A2DStringArray do
  begin
    for var SingleString in SingleStringArray do
    begin
      Writeln(SingleString);
    end;
  end;
end;

procedure Test2(const A2DStringArray: TAbcPair);
begin
  for var SingleStringArray in A2DStringArray do
  begin
    Writeln(SingleStringArray);
  end;
end;

begin
  try
    Test([['1', '2'], ['3', '4']]); // <- Inkompatible Typen: 'TAbcPair' und 'Set'
    Test2(['1', '2']); // <- Inkompatible Typen: 'TAbcPair' und 'Set'

    var liste : TAbcPair;
    liste[0] := '5';
    liste[1] := '6';
    Test([liste]); // <- Alles cool
    Test2(liste); // <- Alles cool
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Geändert von Incocnito (18. Sep 2024 um 12:28 Uhr)
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: 2-Dimensionale Stringlisten übergeben

  Alt 18. Sep 2024, 14:40
Ja, dann mach doch nicht?
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#5

AW: 2-Dimensionale Stringlisten übergeben

  Alt 22. Sep 2024, 09:53
Moin,
vielleicht ein anderer Ansatz.
CSV-List

VG / Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz