|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Помогите пожалуйста !
|