[DELPHI] Problem z stringiem

Odpowiedz Nowy wątek
Gość
2006-09-24 14:48
Gość
0

Witam.

Mam problem z odczytaniem pliku txt do stringa. Otóż zawsze mi dzieli jakoś dziwnie string przy nowej linii, co wygląda w debuggerze tak:

ZnakiZnakiZnakiZnakiZnakiZnaki[El]'#$D#$A'ZnakiZnakiZnakiZnakiZnakiZnaki[EL]

Dodam iż to jest zwykły typ string, nie żadne TStrings czy Bóg wie co jeszcze. [EL] Oznacza koniec linii. Nie wiem czemu mi dodaje te znaki:

'#$D#$A'

Mógłbym je chyba usunąć przez polecenie Delete, ale to jest droga trochę okrężna, bo jeśli wkradnie się trochę inny ciąg to co będzie? Dodam iż ten ciąg nie jest tak normalnie widoczny, jak daję w showmessage ten cały string, showmessage po prostu robi mi przełamanie wiersza, i nic więcej..

Aha, i jeszcze żebym nie zapomniał, plik tekstowy ma przełamanie wiersza równo co 76 znaków, może da się to jakoś obejść żeby w stringu co 76 znaków dodawało [EL], a jeśli zostanie już odczytane 12 linii (12 razy wstawione [EL]) wykonało jakąś operację?

Cały plik odczytuję w ten sposób:

 while not Eof(TF) do
          begin
            Read(TF, C);
            Inc(ILZnakow);
            if Eoln(TF) then
            begin
              Tresc := Tresc+'[EL]';
              Inc(ILLini2);
              ILZnakow := 0;
              if ILLini2 = 12 then
              begin   
              Tresc := '';
              ILLini2 := 0;
              end;
            end
            else
              Tresc := Tresc+String(C);
          end;

Pozostało 580 znaków

2006-09-24 15:15
Moderator

Rejestracja: 17 lat temu

Ostatnio: 2 godziny temu

0

#$D#$A to jest inaczej #13#10 czyli \r\n czyli zwykły Windowsowy znak końca linii. Wczytujesz go z pliku do tego stringa, możesz usuwać przez Delete.

Pozostało 580 znaków

Ad
2006-09-24 15:19
Ad

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

0

Myślę, że to powinno działać. Odczytuje po prostu po kolei linie...

var TempStr,S:string;
begin
  while not Eof(TF) do begin
    Readln(TF,TempStr);
    S:=S+TempStr+'[EL]';
  end;
end.

[EDIT]: Ktos mnie uprzedził!


Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0