Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 24.02.12 14:01 
Ein freundliches hallo an alle,

zur Anzeige von Daten möchte ich TStringGrids verwenden. Da die Anzahl der benötigten Grids erst zur Laufzeit fest steht, wollte ich ein dynamisches Array verwenden um die Grids dort einzutragen und bei Bedarf sichtbar zu schalten, statt dann die Daten einzulesen. Doch der Compiler hat mir einen Strich durch diese Rechnung gemacht. Er nölt "Inkompatible Typen".

Ist da schon der Ansatz falsch oder habe ich im Programm einen Fehler gemacht, den ich nicht sehe? :?:

Hier des Delphi 4 Programm:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
Procedure GetListen( SG : Array of TStringGrid; List : TStringList );
var
  SL, TL : TStringList;
  I, L   : Integer;


begin
  L := List.Count;
  if L > 10 then L := 10;
  for I := 0 to L - 1 do
  begin
    if FileExists( List[I] ) then
    begin
      SetLength( SG, Length( SG ) + 1 );                
      SG[ I ]         := TStringGrid.Create( TComponent( TerminHinw ) );
      SG[ I ].Visible := false;
      SG[ I ].Parent  := Form1;
      SL              := ReadSlFromFile( List[I] );
      TL              := GetStrgBlock( SL, 'Daten' );
      LoadGridStrLst( SG, TL );
      SL.Free;
      TL.Free;
      TL := Nil;
    end
    else
    begin
      Msg( 'Termin-Datei "'+List[I]+' nicht gefunden'  );
    end;
  end;
end;

Bei "SetLength( SG" meckert der Kompiler "Inkompatible Typen". Natürlich kann ich ein festes Array verwenden, aber das wäre nicht so elegant.

Vielleicht hat jemand eine Erklärung. Dank euch im Voraus und Grüße von der Nordsee

Peter
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 24.02.12 14:10 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Type
 TSGArray=Array of TStringGrid;


Procedure GetListen(var SG : TSGArray; List : TStringList );


ich würde Dir aber eher TObjectList oder zumindest TList empfehlen ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 24.02.12 15:01 
Hallo bummi,

dank Dir für Deine Antwort! Hätte eigentlich auch selbst drauf kommen müssen, aber das ist ja auch typisch, irgend wann sieht man sehr viele Bäume und finndet deshalb den Wald nicht.

Grüße von der vernieselten Nordsee

Peter