AGB  ·  Datenschutz  ·  Impressum  







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

setlength klappt nicht

Ein Thema von kaffesuechtig · begonnen am 24. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
kaffesuechtig

Registriert seit: 24. Mär 2007
3 Beiträge
 
#1

setlength klappt nicht

  Alt 24. Mär 2007, 15:04
Hallo,

ich habe folgendes Problem:

Delphi-Quellcode:
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
satz ist als satz:array of string definiert.


Warum klappt das nicht? Wenn ich kein dynamisches Array verwende klappt alles.


gruß
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:10
Hi, Kaffeesüchtiger, herzlich willkommen

Delphi-Quellcode:
while(i <= laenge) do
begin
  setlength(satz, laenge);
Da machst du in der Schleife immer das gleiche, das reicht einmal vor der Schleife, wie du es zusätzlich auch hast.

Und kann es sein, laenge sollen die Anzahl der Zeilen des Memos sein? Das ginge so:

laenge := Memo1.Lines.Count;
  Mit Zitat antworten Zitat
kaffesuechtig

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

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:13
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.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:14
Statt eines array of string solltest du lieber eine stringlist verwenden.

Gruß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:23
Zitat von kaffesuechtig:
Kann man überhaupt eine wechselnde integer Variable als Parameter für setlength nehmen?
Natürlich, sonst kann man auf dynamische Arrays ja gleich verzichten.

Ü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?
  Mit Zitat antworten Zitat
kaffesuechtig

Registriert seit: 24. Mär 2007
3 Beiträge
 
#6

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:30
vom compiler kommt kein fehler aber wenn man die procedure ausführt !!
00403EEC irgnedwas damit
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#7

Re: setlength klappt nicht

  Alt 24. Mär 2007, 15:30
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
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: setlength klappt nicht

  Alt 25. Mär 2007, 13:52
... 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.
  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 19: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