![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
вывести из текстового файла в поле memo строку с номером N
|
|
#2
|
|||
|
|||
|
Банальный спсоб
Код:
var
AFile: TStrings;
begin
AFile := TStringList.Create;
AFile.LoadFromFile('Путь к файлу');
Memo1.Lines.Add(AFile.Strings[N]);
AFile.Free;
end; |
|
#3
|
|||
|
|||
|
Ага, а если файл 2Гб?
Тут лучше честно прочитать нужное кол-во строк через readln. Код:
function ReadStringN(AFileName :String; N :Integer) : String;
var
F : TextFile;
I : Integer;
begin
Result := '';
AssignFile(F,AFileName);
Reset(F);
I := 1;
While (I <= N) And (Not Eof(F)) Do
ReadLn(F,Result);
CloseFile(F);
end; |
|
#4
|
|||
|
|||
|
Спасибо) Помогло
|
|
#5
|
|||
|
|||
|
А если нужно из строки определенное слово ?
или к примеру первая буква слова находится в строке 10-ой по счёту , нужно вытянуть слово , как это зделать ? |
|
#6
|
|||
|
|||
|
Насчет слова из строки можно так :
Код:
function Get_CountWords_In_String(UnChar : TSetChars; Sx : string) : integer;
//Определить кол-во слов в строке
//UnChar - множество символов - разделителей слов
var
InWord : byte;
i : integer;
begin
Result:=0;
if length(Sx)>0 then begin
InWord := 0;
i:=0;
while i<length(Sx) do
begin
i:=i+1;
if not (Sx[i] in UnChar) then begin //этот символ - НЕ разделитель
if InWord<=0 then Result:=Result+1; //переход на начало слова
InWord:=1; //Мы внутри слова
end
else begin //этот символ - разделитель
InWord:=0; //Мы снаружи слова
end;
end;
end;
end;
function Get_Word_From_String(UnChar : TSetChars; Sx : string; NumWord : integer) : string;
//Получить слово из строки по номеру
//UnChar - множество символов - разделителей слов
//NumWord - номер слова
var
InWord : byte;
NumWordCur, i : integer;
begin
Result:='';
if length(Sx)>0 then begin
if NumWord>0 then begin
InWord := 0;
NumWordCur:=0;
i:=0;
while i<length(Sx) do
begin
i:=i+1;
if not (Sx[i] in UnChar) then begin //этот символ - НЕ разделитель
if InWord<=0 then NumWordCur:=NumWordCur+1; //мы - на начале слова
InWord:=1; //Мы внутри слова
if NumWordCur=NumWord then begin //Это - наше слово
Result:=Result+Sx[i]; //и мы его выдираем из строки
end;
end
else begin //этот символ - разделитель
InWord:=0; //Мы снаружи слова
if NumWordCur=NumWord then begin //Это было - наше слово
i:=length(Sx)+1; //поэтому, выходим из цикла и функции
end;
end;
end;
end;
end;
end;
|
| Этот пользователь сказал Спасибо roamer за это полезное сообщение: | ||
roleli (13.02.2014)
| ||
|
#7
|
|||
|
|||
|
Цитата:
А как сделать так что бы выводило данные до определенного слова , например что бы выводило все до строки с текстом "text", слово "text" не выводить на экран . а вывести тоьлко то что до него и начиная со строки номер 50 например. Благодарю заранее |
|
#8
|
|||
|
|||
|
Помогите пожалуйста !
|