Autor Beitrag
e
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 01.06.03 17:31 
eine ascii-datei wird eingelesen, jede zeile mit nummern versehen (1-ende) und dann wird es in einer memo ausgegeben.
das problem ist, dass immer eine zeile zuwenig ausgelesen wird.
ausblenden Delphi-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:
29:
30:
var
   i,ende : integer;
  TxtFile: TextFile;
  t : string;
  Data: array of string;

        AssignFile(TxtFile, command);
        Reset(TxtFile);
        ende := 0;
        SetLength(Data, 0);
    //Repeat for each line until end of file
        repeat
          Inc(ende);
          readln(TxtFile, t);
          SetLength(Data, Length(Data) + Length(t));
          Data[ende] := t;
        until EOF(TxtFile);

        SetLength(Data, Length(Data) + 3 * ende);
    //Add to each line the line number
        for i := 1 to ende do Data[i] := IntToStr(i) + ' ' + Data[i];
        SetLength(Data, Length(Data) + 2);
    //Add a carriage return and line feed
        Data[1] := Data[1];
        i := Length(Data[5]);
        Data[5] := '';
        SetLength(Data, Length(Data) - i);
   // show file content 
        for i := 1 to ende-1 do      //delete empty line with 'ende-1'
        Memo.Lines.Add(Data[i]);

das ende-1 am schluss ist wichtig, damit wird verhindert, dass eine leere zeile eingetragen wird, die nicht in der datei steht.

ich will nichts mit loadfromfile() oder sonstwas machen, da ich mehrere dateien einlesen will, ohne das das memo feld geleert wird.

aber was ist falsch ?
erik_der_elch
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 15.06.03 21:23 
Hallo,

versuch mal das inc(ende) nach "Data[ende] := t" (Memos beginnen mit NULL) und die for i:=1 to ende -1 auf "i := 0 to ende-1 " zu setzen.