У меня есть текст, передаваемый в функцию. Этот текст может содержать что угодно, от одного символа до полной книги.
Мне нужно извлечь первый лайк и использовать его в качестве «заголовка», чтобы я мог назвать файл, в котором я сохраняю этот текст как резервную копию. Я использую следующее:
function GetTitle(var Text:string):string;
var
title: string;
position: integer;
begin
title := '';
position := AnsiPos(#10, Text);
if position = 0 then
begin
position := AnsiPos('.', Text);
if (position = 0) then
title := Text
else
title := copy(Text, 1, position);
end
else
begin
title := copy(Text, 1, position);
end;
result := title;
end;
Я проверяю № 10, а не № 13, потому что текст может быть передан либо из приложения Windows, либо из приложения Mac OS X. В тех случаях, когда №10 нет, я проверяю 1-й. (точка), и если их нет, я передаю все это как заголовок.
Этот подход вызывает некоторые проблемы с именами файлов, содержащими # 13 в имени или имена слишком длинные. Я могу добавить чек на> 256 для заголовка, но это просто другая вещь.
В любом случае, есть ли способ правильно прочитать первую строку (включая # 13 # 10 или # 10 или # 13 или. Или что-то еще)?
Я знаю, что это просто, но я не могу найти способ справиться с этим, не вложив ifs ...
код приветствуется. спасибо