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

1

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

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

Ваш Ответ

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;

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

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

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

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

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

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