![]() |
setlength klappt nicht
Hallo,
ich habe folgendes Problem:
Delphi-Quellcode:
satz ist als satz:array of string definiert.
begin
cache:=Memo1.text; laenge:=length(cache); setlength(satz, laenge); i:=0; while(i<=laenge) do begin setlength(satz, laenge); satz[i]:=cache[i]; inc(i); end; end Warum klappt das nicht? Wenn ich kein dynamisches Array verwende klappt alles. gruß |
Re: setlength klappt nicht
Hi, Kaffeesüchtiger, herzlich willkommen ;)
Delphi-Quellcode:
Da machst du in der Schleife immer das gleiche, das reicht einmal vor der Schleife, wie du es zusätzlich auch hast.
while(i <= laenge) do
begin setlength(satz, laenge); Und kann es sein, laenge sollen die Anzahl der Zeilen des Memos sein? Das ginge so:
Delphi-Quellcode:
laenge := Memo1.Lines.Count;
|
Re: setlength klappt nicht
nun gut aber der Fehler kommt trotzdem und es liegt 100% am setlength. Kann man überhaupt eine wechselnde integer Variable als Parameter für setlength nehmen? Der Benutzer tippt nämlich ein Text ins Memofeld ein und das soll als string in cache eingelesen werden. und das array soll halt dann die größe des satzes annehmen.
|
Re: setlength klappt nicht
Statt eines array of string solltest du lieber eine stringlist verwenden.
Gruß |
Re: setlength klappt nicht
Zitat:
Überprüfe mal den Wert von laenge. Aber je nach Vorhanden ist es evtl. wirklich geschickter, eine TStringList zu verwenden. Die kannst du in einer Schleife einfach durchlaufen und den Inhalt auch in dem Memo ausgeben. Was kommt denn überhaupt für ein Fehler? |
Re: setlength klappt nicht
vom compiler kommt kein fehler aber wenn man die procedure ausführt !!
00403EEC irgnedwas damit |
Re: setlength klappt nicht
Hallo!
Wenn Du Deine Schleife soweit laufen lässt, dass i = laenge ist, dann greifst Du auf ein Element im Array zu, welches gar nicht vorhanden ist. Die Indizierung eines dynamischen Arrays beginnt bei 0 und endet bei Length()-1. Ändere also die Bedingdung der while-Schleife mal auf i<laenge. Grüße Christian |
Re: setlength klappt nicht
... und wenn "cache" immernoch ein String ist, dann greifst du dort auch auf einen ungültigen Index zu, da Strings von 1 bis Lenght() gehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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