Чтение из файла FreePascal

Итак, у меня есть текстовый файл, содержащий:

Harry Potter and the Deathly Hallows###J. K. Rowling###2007

И я должен вывести его в программу FreePascal в следующем виде

J.K.Rowling "Harry Potter and the Deathly Hallows" 2007 year

Я умею читать из файла, но не знаю, как сделать так, как в предыдущей форме

Кто-нибудь может мне помочь? Я был бы очень благодарен.


person Peter Johnson    schedule 16.03.2013    source источник
comment
что ты уже испробовал? Думаю, это твоя домашняя работа. Разбивает строку на токены и помещает токены, включенные в ###, на передний план. О разделении строки см. lazarus.freepascal.org/index.php?topic=9789.0   -  person Mihai8    schedule 16.03.2013


Ответы (1)


Если TStringList в freepascal такое же, как в Delphi, то это поможет:

function SortedString( const aString : String) : String;
var
  sList : TStringList;
begin
  Result := '';
  sList := TStringList.Create;
  try
    sList.LineBreak := '###';
    sList.Text := aString;
    if (sList.Count = 3) then
    begin
      Result := sList[1] + ' "' + sList[0] + '" ' + sList[2] + ' year';
    end;
  finally
    sList.Free;
  end;
end;

Обновление, как прокомментировал @TLama, freepascal TStringList не имеет свойства LineBreak.

Вместо этого попробуйте это (используя ReplaceStr в StrUtils):

function SortedString(const aString : String) : String;
var
  sList : TStringList;
begin
  Result := '';
  sList := TStringList.Create;
  try 
    sList.Text := ReplaceStr(aString,'###',#13#10);
    if (sList.Count = 3) then
    begin
      Result := sList[1] + ' "' + sList[0] + '" ' + sList[2] + ' year';
    end;
  finally
    sList.Free;
  end;
end;
person LU RD    schedule 16.03.2013
comment
Боюсь, это не так; Я проверил это в FPC 2.6.0 (Lazarus 1.0 RC2), и там нет свойства LineBreak для TStringList доступен. - person TLama; 16.03.2013