Plik bez końca...

0

Mam taki problem otoz chce wczytac i wyswietlic w Memo plik .reg (tworzony przez WinXP; jezeli ktos go widzial to wie ze co drugi znak to 00) i napisalem taka
...

Character : Char;
Line : String;
begin
While not eof(R) do
begin
Read(R, Character);
case Character of
#255,#254,#13,#00:;
case #10:
begin
Form1.Memo1.Lines.Add(Line);
Line := '';
end;
else
Line := Line + Character;
end;
end;
end;

Jednak 2 rzeczy mi tu nie dzialaja:

  1. Program nie moze znalezc konca pliku! to pewnie przez te 00 w co drugim bajcie
    na zwyklym pliku tekstowym dziala. Probowalem zamienic plik na File of Byte ale nie wiem jak z niego cos odczytac. Czy jest jakis sposob zeby to obejsc?
  2. Gdy testowalem kod na pojedynczej linii (odpowiednio zmodyfikowany zeby zatrzymywal sie po znalezieniu #10) Wszystko dzialalo ale we wpisach Memo co drugi znak zostaje zmieniony na spację! Nie mam pojęcia skąd ta spacja się bierze.

Mam jeszcze pytanie czy w delphi jest funkcja ktora rozdziela String przez podany inny String (cos jak explode w PHP)?

0

Mam jeszcze pytanie czy w delphi jest funkcja ktora rozdziela String przez podany inny String (cos jak explode w PHP)?

jest .. poszukaj arty :) i forum bylo pelno :)

0

Pliki reg są najwyrażniej w formacie unicode.

procedure TForm1.Button1Click(Sender: TObject);
var
  F : File of Byte;
  Buff : array of Byte;
  I : Integer;
  S : WideString;
begin
  AssignFile(F, 'C:\txt.reg');
  Reset(F);
  SetLength(Buff, FileSize(F));
  for I:= 0 to FileSize(F) - 1 do
    Read(F, Buff[I]);
  CloseFile(F);
  S := VarToWideStr(Buff);
  Memo1.Text := WideCharToString(PWideChar(S));
end;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.