AGB  ·  Datenschutz  ·  Impressum  







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

dynamischer Array - direkte Belegung

Ein Thema von Merlin1988 · begonnen am 14. Sep 2005 · letzter Beitrag vom 14. Sep 2005
Antwort Antwort
Benutzerbild von Merlin1988
Merlin1988

Registriert seit: 10. Aug 2005
33 Beiträge
 
Delphi 6 Enterprise
 
#1

dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:07
Abend!

Es gibt ja prozeduren wo man einen dynamischen Array übergeben muss. Beispiel Polygon

Polygon([Point(4,4),Point(300,300),Point(150,300)]); Wie kann ich den im meinem Programm einen dynamischen Array sofort belegen und zwar so, dass ich ganz einfach einen Wert ändern kann ?? also praktisch so

MeinDynamischerArray := ['e','f','i','o']; das funktioniert nur nicht.
Gibt es einen anderen Weg , ohne dabei für diesen Array eine eigene Prozedur zu schreiben??

Das Ziel ist, einfach einen Wert zu ändern oder einen hinzuzufügen und zwar im Quelltext!!
Use the Source, Luke.
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#2

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:08
hm,

also ehrlich gesagt versteh ich überhaupt garnicht was du meinst...
  Mit Zitat antworten Zitat
Benutzerbild von Merlin1988
Merlin1988

Registriert seit: 10. Aug 2005
33 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:10
ich möchte einen dynamischen Array sofort und nur durch einen Befehl belegen und dabei alle Werte auf einmal übergeben.
Use the Source, Luke.
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#4

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:16
achsoo.
also ich glaube, das geht so nicht.
würde das halt in einer schleife oder so machen.

du musst zuvor auch noch mit SetLength() die Länge festlegen....
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:23
Man könnte ja eine generische Prozedur (im Stil der ObjectList-Templates) mit offenem Array-Parameter schreiben .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Merlin1988
Merlin1988

Registriert seit: 10. Aug 2005
33 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:28
dann müsste doch aber auch der Array, in dem die Werte gespeichert werden sollen, übergeben werden .

Wie sehe das auch ????
Use the Source, Luke.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 19:40
Das geht auch noch, hätte ich nicht gedacht .

Den Teil musst du nur einmal sehen, dann kannst du ihn schnell in eine Unit wegsperren :
Delphi-Quellcode:
{$IFNDEF FILL_ARRAY_TEMPLATE}
unit FillArray_Template;

interface

type _ARRAY_ITEM_ = Integer;

{$ENDIF FILL_ARRAY_TEMPLATE}

{$IFNDEF FILL_ARRAY_TEMPLATE_SECOND_PASS}

type
  _ARRAY_TYPE_ = array of _ARRAY_ITEM_;

function FillArray(AItems: array of _ARRAY_ITEM_): _ARRAY_TYPE_;

{$ENDIF FILL_ARRAY_TEMPLATE_SECOND_PASS}

{$IFNDEF FILL_ARRAY_TEMPLATE}
implementation

{$DEFINE FILL_ARRAY_TEMPLATE_SECOND_PASS}
{$ENDIF FILL_ARRAY_TEMPLATE}

{$IFDEF FILL_ARRAY_TEMPLATE_SECOND_PASS}

function FillArray(AItems: array of _ARRAY_ITEM_): _ARRAY_TYPE_;
var
  i: Integer;
begin
  SetLength(Result, Length(AItems));
  for i := 0 to High(Result) do
    Result[i] := AItems[i];
end;

{$IFNDEF FILL_ARRAY_TEMPLATE}
end.
{$ENDIF FILL_ARRAY_TEMPLATE}
{$ENDIF FILL_ARRAY_TEMPLATE_SECOND_PASS}
{$DEFINE FILL_ARRAY_TEMPLATE_SECOND_PASS}
Das Beispiel ist nicht ganz so hässlich:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FillArray_Template;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

{$DEFINE FILL_ARRAY_TEMPLATE}
type
  _ARRAY_ITEM_ = string;
{$INCLUDE FillArray_template.pas}
type
  StringArray = _ARRAY_TYPE_;

implementation

{$R *.dfm}

{$INCLUDE FillArray_template.pas}

procedure TForm1.FormCreate(Sender: TObject);
var
  s: StringArray;
  i: Integer;
begin
  s := FillArray(['*blubb*', 'Hello', 'World', '*blubb*']);
  for i := 0 to High(s) do
    ShowMessage(s[i]);
end;

end.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#8

Re: dynamischer Array - direkte Belegung

  Alt 14. Sep 2005, 20:54
TCanvas.Polygon (die ist das doch, oder?) braucht kein dynamisches Array. Die Konstruktion nennt man offenes Array, dort kann man auch ein statisches Array einsetzen. Um ein dynamisches Array als Parameter zu erzwingen, müsste man erst einen eigenen Typ deklarieren.
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:33 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