![]() |
Problem mit SetLength
Hey,
ich hab ein Problem mit Setlength was ich überhaupt nicht versteh, ich vermute aber ihr werdet mir wiedermal nach einem Blick sagen könn wo dran es liegt ich hab das hier gemacht :
Delphi-Quellcode:
ich bekomme nun aber in der Zeile "Liste := SetLength(Liste,y+1);" den Fehler [Pascal Fehler] U_Daten_Verarbeiten.pas(114): E2008 Inkompatible Typen
procedure Element_hinzufügen(Text : String; var Liste : Array of String);
var y : integer ; begin y := Length(Liste); SetLength(Liste,y+1); Liste[y-1] := Text end; wisst ihr wodran das liegt ? ich hab doch y als integer definiert und laut delphi-hilfe müsste die neue Länge ein Integerwert sein das ist doch gegeben oder nicht ?! |
Re: Problem mit SetLength
Aber Liste nicht
|
Re: Problem mit SetLength
aber es steht doch :
Beschreibung S ist eine Delphi-String- oder dynamische Array-Variable. und Liste ist ein dynamisches Array oder nicht ?! |
Re: Problem mit SetLength
Definier dir dein String Array mal als Typ. Aber davon mal abgesehen, was spricht gegen eine StringListe? Da sparst du dir das ganze.
|
Re: Problem mit SetLength
Hab's gerade mal getestet, du hast wahrscheinlich sowas gemacht
Delphi-Quellcode:
so müsste es funktionieren:
a: array [2..10] of string; //Hier legst du fest, dass das Array a nicht dynamisch ist, darum gibt's nen Fehler in setLength
... Element_hinzufügen(15,a);
Delphi-Quellcode:
a: array of string; //einfach die Längenangabe weglassen
... Element_hinzufügen(15,a); |
Re: Problem mit SetLength
das Problem ist ich möchte dass die Elemte die ich einsortiere zusammen bleiben
d.h. ich möchte sie auch einzelnd ansprechen könn z.b. Liste[i] ... aber wenn ich ne StringList nutze sortiert der die alle in die selbe zeile .. wenn ich z.b. dann Liste.text auswerte sind da nicht mehrere Zeilen sondern nur eine ... und nein ich hatte dem keine feste größe geben das hier hab ich gemacht :
Delphi-Quellcode:
procedure TBearbeiten.Termine_Verarbeiten(TerminText: string; Datum: TDateTime; var Aktuelle_Termine: array of TStringList);
var pos1 : Integer ; TerminListe : Array of String ; // <= keine Längenangabe Acht_Tage : Array of TStringlist ; procedure Strings_Einsortieren(var Text : String; var Liste : Array of String ) ; var Start_pos1, End_Pos1: integer ; SubString : String ; procedure Element_hinzufügen(Text : String; var Liste : Array of String); var y : integer ; begin y := Length(Liste); SetLength(Liste,y+1); Liste[y-1] := Text end; begin Repeat Start_Pos1 := Pos('<',Text); End_Pos1 := pos('>',Text); End_Pos1 := PosEx('>',Text,End_Pos1+1); SubString := Copy(Text,Start_Pos1,End_Pos1); Element_hinzufügen(SubString,Liste) ; Text := Copy(Text,End_Pos1+1); until Pos('<',Text) = 0 ; end; begin pos1 := Pos('}',TerminText); TerminText := Copy(TerminText,Pos1 + 1); Strings_Einsortieren(TerminText,TerminListe); end; |
Re: Problem mit SetLength
Delphi-Quellcode:
Das geht nicht für VAR-Parameter, da Delphi eine strickte Typenunterscheidung hat.
Liste : Array of String
Soeine Definition erstellt kein "richtiges" dynamisches Array und deßhalb ist es inkompatibel zu SetLength.
Delphi-Quellcode:
oder
type TMyStringArray = Array of String;
procedure Element_hinzufügen(Text : String; var Liste : TMyStringArray);
Delphi-Quellcode:
procedure Element_hinzufügen(Text : String; var Liste : TStringDynArray);
|
Re: Problem mit SetLength
Zitat:
Delphi-Quellcode:
var
sl: TStringList; begin sl := TStringList.Create; try sl.Add('foo'); sl.Add('bar'); ShowMessage(sl.Strings[0]); finally sl.Free; end; |
Re: Problem mit SetLength
oh
danke :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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