Вопрос по pascal, delphi-xe3, delphi-xe2, memorystream, delphi – Delphi: самый простой способ поиска строки в потоке памяти

1

Какие'самый простой способ найти строку в потоке памяти (и нескольких строках) и вернуть true или false?

en.wikipedia.org/wiki/String_search Arioch 'The
Вы спрашиваете о поиске одной строки внесколько строк или вы спрашиваете о поискенесколько строк в одном потоке памяти? Arioch 'The
Начните с исправления их, чтобы они имели одинаковую кодировку или кодировку. Одно и то же строковое значение обеспечивает абсолютно разные байтовые значения (TMemoryStream) в кодировках UTF-8, UTF-16 и не-Unicode. Arioch 'The
Используйте, например,Pos функция и это.piece of code TLama

Ваш Ответ

1   ответ
2
var ms:TMemoryStream;
    strS:TStringStream;
    aStr:string;
    aPos:integer;
    found:boolean;
begin
    ms:=TMemoryStream.Create;
    ms.LoadFromFile('c:\aFile.txt');
    strS:=TStringStream.Create;
    strS.LoadFromStream(ms);
    aPos:=pos(aStr,strS.dataString);
    found:=aPos>0;
end;

TStringStream - это часто забываемый, но очень полезный инструмент - он проще и безопаснее, чем возиться с pChars и т. Д.

Для многократного поиска либо циклически используйте цикл pos, подстроку и т. Д., Либо используйте RegEx.

Этот код прекрасно работает в Delphi XE, хотя TStringStream очень старый - не уверен, что он совместим с юникодом.

(Пример негерметичен - я для краткости опустил код завершения)

В более новых версиях Delphi TStringStream.Create имеет перегрузку, которая принимает TEncoding:docwiki.embarcadero.com/Libraries/XE2/en/... iPath ツ

Похожие вопросы