AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi belieb.Dyn. Array in Procedure mit SetLength verändern
Thema durchsuchen
Ansicht
Themen-Optionen

belieb.Dyn. Array in Procedure mit SetLength verändern

Ein Thema von Hallo_Thomas · begonnen am 23. Jul 2006 · letzter Beitrag vom 25. Jul 2006
Antwort Antwort
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 23. Jul 2006, 19:06
Hallo,

wie kann ich einer untergeordneten Procedure die Länge einer Dyn. Array verändern?



Mein Versuch, der schief ging;
Delphi-Quellcode:
procedure TForm.Button2Click(Sender: TObject);
var Werte:Array Of Integer;
begin
  SetLength(Werte,5);
  SetLaenge(Werte,Werte);
  Label1.Caption:=IntToStr(length(Werte));

end;

procedure TForm.SetLaenge(Wert:Array Of Integer;var Werte:Array Of Integer);
begin
  SetLength(Werte,10);
 ///
end;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 23. Jul 2006, 19:09
Wenn du immer statt Array of Integer TIntegerDynArray ( = Array of Integer) benutzt, gehts.
Delphi-Quellcode:
type
  TIntegerDynArray = array of integer;

procedure TForm.Button2Click(Sender: TObject);
var Werte:TIntegerDynArray;
begin
  SetLength(Werte,5);
  SetLaenge(Werte,Werte);
  Label1.Caption:=IntToStr(length(Werte));

end;

procedure TForm.SetLaenge(Wert:Array Of Integer;var Werte:TIntegerDynArray);
begin
  SetLength(Werte,10);
///
end;
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 24. Jul 2006, 10:57
Danke Dax, Nu hab ich noch ein Problem, ich habe mehre Forms

Delphi-Quellcode:
//////////Form1
procedure TForm1.Button1Click(Sender: TObject);
var Werte:TIntegerDynArray;
begin
  SetLength(Werte,5);
  Form2.SetLaenge(Werte,Werte);
  Label1.Caption:=IntToStr(length(Werte));
end;
///////////Form2
procedure TForm2.SetLaenge(Wert:Array Of Integer;var Werte:TIntegerDynArray);
begin
  SetLength(Werte,10);
///
end;
Fehlermeldung:[Fehler] Unit1.pas(35): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen.

Wie kann ich die Fehlermeldung umgehen?
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#4

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 25. Jul 2006, 17:38
Gibt es da wirklich keine Lösung,muss ich da in jede unit die procedure schreiben?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 25. Jul 2006, 17:41
Nein, du musst immer denselben Typ verwenden ... z.B. TIntegerDynArray aus der Unit Types
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 25. Jul 2006, 17:49
Hallo Thomas,

welche Prozedur meinst du überhaupt? Das von dir konstruierte Beispiel in Beitrag #1 soll doch nur zeigen, ob dein array in der Methode SetLaenge() neu dimensioniert werden konnte. Dax hat dir gezeigt, dass du dazu einen Array-Typ vereinbaren musst (oder verwende einen passenden aus Unit Types, z.B. TIntegerDynArray) und die entsprechende Variable mit der Aufrufkonvention Call-By-Reference übergeben musst, damit die Neudimensionierung funktionieren kann. Von einer Prozedur, die in alle Formulare aufgenommen werden muss, kann doch keine Rede sein!?

Grüße vom marabu
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#7

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 25. Jul 2006, 18:35
Beitrag #3 Ich meine den veränderten code in In Beitag#3.Ich finde dazu leider auch kein beispiel oder so.

Stehe da echt ein bisschen auf dem schlauch
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: belieb.Dyn. Array in Procedure mit SetLength verändern

  Alt 25. Jul 2006, 20:31
Ich auch!

Deine Methode SetLaenge() weist zwei Parameter mit unterschiedlichen Typen auf, du aber übergibst in beiden Fällen die gleiche Variable (Werte: TIntegerDynArray). Kein Wunder, dass der Compiler meckert. Der Sinn der Methode SetLaenge() ist mir nicht ganz klar. Wenn es wirklich nur um das Redimensionieren geht, dann kannst du doch an jeder Stelle SetLength() verwenden.

marabu
  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 18:35 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