AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit SetLength

Ein Thema von gangs-taas · begonnen am 24. Jan 2010 · letzter Beitrag vom 24. Jan 2010
Antwort Antwort
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#1

Problem mit SetLength

  Alt 24. Jan 2010, 18:33
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:
 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;
ich bekomme nun aber in der Zeile "Liste := SetLength(Liste,y+1);" den Fehler [Pascal Fehler] U_Daten_Verarbeiten.pas(114): E2008 Inkompatible Typen

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 ?!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:37
Aber Liste nicht
Markus Kinzler
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#3

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:39
aber es steht doch :
Beschreibung
S ist eine Delphi-String- oder dynamische Array-Variable.

und Liste ist ein dynamisches Array oder nicht ?!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:41
Definier dir dein String Array mal als Typ. Aber davon mal abgesehen, was spricht gegen eine StringListe? Da sparst du dir das ganze.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:43
Hab's gerade mal getestet, du hast wahrscheinlich sowas gemacht
Delphi-Quellcode:
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);
so müsste es funktionieren:
Delphi-Quellcode:
a: array of string; //einfach die Längenangabe weglassen
...
Element_hinzufügen(15,a);
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#6

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:46
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:46
Liste : Array of String Das geht nicht für VAR-Parameter, da Delphi eine strickte Typenunterscheidung hat.
Soeine Definition erstellt kein "richtiges" dynamisches Array und deßhalb ist es inkompatibel zu SetLength.

Delphi-Quellcode:
type TMyStringArray = Array of String;

procedure Element_hinzufügen(Text : String; var Liste : TMyStringArray);
oder
procedure Element_hinzufügen(Text : String; var Liste : TStringDynArray);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:50
Zitat von gangs-taas:
wenn ich z.b. dann Liste.text auswerte sind da nicht mehrere Zeilen sondern nur eine ...
Man muss sie natürlich auch richtig anwenden. Man kann auch auf einzelne Zeilen der StringListe zugreifen. Einfach nur mal die Hilfe bemühen.
Delphi-Quellcode:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.Add('foo');
    sl.Add('bar');
    ShowMessage(sl.Strings[0]);
  finally
    sl.Free;
  end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#9

Re: Problem mit SetLength

  Alt 24. Jan 2010, 18:52
oh
danke
  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 23: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