Autor Beitrag
bounc3r
Hält's aus hier
Beiträge: 14

Win XP
D7 Enter
BeitragVerfasst: Fr 29.10.04 18:34 
Hi leute,

und wieder ne frage von mir...

ALso das ist der code
ausblenden 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:
 Try
  IdFTP1.Connect(true,5000);
  if IdFTP1.Connected then
  begin
   Try
    if FileExists('NewsImArray.dat') then DeleteFile('NewsImArray.dat');
    IdFtp1.Get('NewsImArray.dat','NewsImArray.dat');
    ShowMessage('Datei erfolgreich Runtergeladen');


    //----------------------------------------------LOAD
    AssignFile(Datei,'NewsImArray.dat');
    Reset(Datei);
    while not EOF(Datei) do
    begin
     read(Datei,testtext[i]);
[b]     NewsGesamt.Strings[i] := testtext[i];[/b]                         <------------------------------ Zeile 17
     NewsKurz.Items.Insert(0,(Copy(NewsGesamt.Strings[i],1,10) + '...'));
     inc(i);
    end;
    CloseFile(Datei);
    //----------------------------------------------LOAD

    ShowMessage('Datei erfolgreich Eingebunden');

   Except
    ShowMessage('Fehler beim Runterladen');
   End;


Und er gibt mir die Fehlermeldung raus "Listenindex überschreitet das Maximum (0)". Hab durchs debbugen herausgefunden das (denke ich) Zeile 17 der übeltäter ist. hab auch mal aus SPass bei Zeile 17 das gemacht "NewsGesamt.Strings[i+1] := testtext[i];" und als Fehlermeldung kommt "Listenindex überschreitet das Maximum (1)" raus.


Bitte hilft mir, ich dreh schon durch!

DANKE
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Fr 29.10.04 18:43 
kann es sein das du den array "testtext[i]" nicht initialisiert hast?
oder ihm keine größe (setlength) zugewiesen hast?

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
bounc3r Threadstarter
Hält's aus hier
Beiträge: 14

Win XP
D7 Enter
BeitragVerfasst: Fr 29.10.04 19:38 
ne kann nicht sein...

andersrum funktioniert es ja: er speichert das lokal und lädt es dann auf dem server...
hier ein ausschnitt
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 //----------------------------------------------SAVE
 AssignFile(Datei,'NewsImArray.dat');
 Rewrite(Datei);
 for i := 0 to NewsGesamt.Count-1 do
 begin
  testtext[i] := NewsGesamt.Strings[i];
  write(Datei,testtext[i]);
 end;
 CloseFile(Datei);
 //----------------------------------------------SAVE
bounc3r Threadstarter
Hält's aus hier
Beiträge: 14

Win XP
D7 Enter
BeitragVerfasst: Fr 29.10.04 19:50 
und hier meine deklaration
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type
 TNews = String[50];
end;

var
  Form1: TForm1;
  AnzahlZeilen, AnzahlNewsGesamt, zeiger, SaveListPos : Integer;
  Text : String;
  NewsGesamt : TStringList;
  testtext : Array[0..99] of TNews;
  datei : file of TNews;
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Sa 30.10.04 13:23 
oh mann, wo ich das geschrieben hab stand ich aber auf dem schlauch :autsch::

der fehler liegt schon in der zeile
ausblenden Delphi-Quelltext
1:
NewsGesamt.Strings[i] := testtext[i];					

der grund ist aber folgender: die werte bei NewsGesamt.Strings[i] wurden noch gar nicht erstellt.
folgender code behebt das problem:
ausblenden Delphi-Quelltext
1:
NewsGesamt.Add(testtext[i]);					

wenn du eine stringlist bzw eine klasse von TStrings komplett umkopiern möchtest kannst du dir auch eine schleife sparen und einfach folgenden code benutzen:
ausblenden Delphi-Quelltext
1:
NewsGesamt.AddStrings(testtext);					

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
bounc3r Threadstarter
Hält's aus hier
Beiträge: 14

Win XP
D7 Enter
BeitragVerfasst: So 31.10.04 16:13 
vielen dank

ich bin aber selber drauf gekommen also ich neu mit nem simplen beispiel angefangen hab (hat aber ca. 3 std.) gedauert

man das ist vielleicht ein scheiß :-) aber im nachhinein logisch :-)