Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SetLength und type? (https://www.delphipraxis.net/13288-setlength-und-type.html)

Matze 15. Dez 2003 15:38


SetLength und type?
 
Hi!

Kann mir jemand sagen, was ich da falsch mache?
Delphi-Quellcode:
procedure TForm1.ArrayFuellen(var TArray: array of string);
begin
  SetLength(TArray, ListBox1.Count);

  ...

end;
Es kommt immer dieser Fehler:
Zitat:

[Fehler] Unit1.pas(49): Inkompatible Typen

sakura 15. Dez 2003 15:43

Re: SetLength und type?
 
Du musst einen Typen definieren ;-)

Delphi-Quellcode:
type
  TStringArray = array of string;

procedure TForm1.ArrayFuellen(var TArray: TStringArray);
begin
  SetLength(TArray, ListBox1.Count);

  ...
end;
...:cat:...

Matze 15. Dez 2003 15:57

Re: SetLength und type?
 
Danke, aber das hab ich gemacht, geht trotzdem nicht.
Und bei meinen anderen proceduren, die ähnlich aufgebaut sind, muss ich den typen auch nicht definieren.

Christian Seehase 15. Dez 2003 16:03

Re: SetLength und type?
 
Moin Matze,

TArray ist nicht zufälliger Weise ein Typangabe?

Matze 15. Dez 2003 16:04

Re: SetLength und type?
 
Zitat:

Zitat von Christian Seehase
TArray ist nicht zufälliger Weise ein Typangabe?

Ich denke doch schon, warum sollte ich's dann oben nochmal definieren, wie sakura meinte?
Außerdem geht das trotzdem nicht. :(

sakura 15. Dez 2003 16:07

Re: SetLength und type?
 
Dann versuche es doch mal, die Variable anders zu benennen.

Code:
type
  TStringArray = array of string;

procedure TForm1.ArrayFuellen(var [color=#ff0000]SomeArray[/color]: TStringArray);
begin
  SetLength([color=#ff0000]SomeArray[/color], ListBox1.Count);

  ...
end;
...:cat:...

Christian Seehase 15. Dez 2003 16:07

Re: SetLength und type?
 
Moin Matze,

die Reihenfolge ist aber Bezeichner : Typangabe. Bei Dir steht also Typangabe : Typangabe.
Das kann ja nicht funktionieren.

Matze 15. Dez 2003 16:16

Re: SetLength und type?
 
Zitat:

Zitat von Christian Seehase
Das kann ja nicht funktionieren.

Eine andere Procedur von mir sieht so aus und geht:
Delphi-Quellcode:
procedure TForm1.GibAus(var TArray: array of string);
var i: integer;
begin
  for i := 0 to Length(TArray)-1 do
    ListBox1.Items.Add(TArray[i]);
end;
@sakura: Ich kappiere das irgendwie nicht so richtig. Bei mir geht das auch nicht.

sakura 15. Dez 2003 16:22

Re: SetLength und type?
 
Zitat:

Zitat von Matze
Ich kappiere das irgendwie nicht so richtig. Bei mir geht das auch nicht.

Was gibt es denn für eine Fehlermeldung, bei mir geht es einwandfrei :?

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TStringArray = array of string;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ArrayFuellen(var SomeArray: TStringArray);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ArrayFuellen(var SomeArray: TStringArray);
begin
  SetLength(SomeArray, ListBox1.Count);
end;

end.
...:cat:...

Christian Seehase 15. Dez 2003 16:23

Re: SetLength und type?
 
Moin Matze,

meine Aussage mit dem "Kann ja nicht funktionieren" bezog sich darauf, das TArray eine Typenangabe ist, was in Deinem Beispiel wohl offensichtlich nicht zutrifft.
Einen Argumentbezeichner mit T beginnen zu lassen ist allerdings unglücklich, da dieser Buchstabe, gemäss Konvention für Typen vorgesehen ist.
Argumente sollten besser mit einem A beginnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.
Seite 1 von 2  1 2      

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