|
Вопрос # 1 641/ вопрос открыт / |
|
Здравствуйте, эксперты!
У меня к вам такой вопрос: есть определенный текстовый файл,в котором содержится набор слов отделенных между собой пробелом. Как из этого файла считать N-ое слово и записать его в какую нибудь переменную? Код в приложении.
Приложение: Переключить в обычный режим- procedure readinv (number: integer);
-
- s, slovo: string;
- begin
- Assignfile(inv,path+'data'+Form2.Edit1.Text+'inventory.txt');
- delete(s,0,length(s));
- k:=0;
- i:=1;
- {$I+}
- reset(inv);
- {$I+}
- while not(EOF(inv)) do
- begin
- readln(inv,s);
- slovo:=slovo+s[i];
- if s[i]=' ' then
- begin
- inc(k);
- if k=number then
- begin
- if slovo='empty ' then
- ShowMessage ('Empty!');
- end;
- delete(slovo,0,length(slovo));
- delete(s,0,length(s));
- end
- else inc(i);
- end;
- closefile (inv);
- end;
-
-
- empty empty empty empty apple empty empty empty empty empty empty empty empty empty empty empty
empty empty empty empty empty empty empty empty empty empty empty empty empty empty
- //------------------------------
-
 |
Вопрос задал: IlluminatI (статус: 2-ой класс)
Вопрос отправлен: 1 июня 2008, 16:06
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, IlluminatI!
Посмотел на ваш код, какой то он странный. вот вам простенький, но функциональный код.
var s:string;
sl:TStringList;
i:integer;
begin
//загрузим в строку
sl:= TStringList.create;
sl.loadfromfile('filename');
s := '';
for i:=0 to sl.count -1 do s:= s+ ' '+sl[i];
sl.clear;
//удалим лишние пробелы
s := trim(s);
while pos(' ', s) <> 0 do
s := StringReplace(s,' ',' ',[rfReplaceAll]);
//Загрузим назад в список и разобъём по пробелу
sl.delimeter := ' ';
sl.delimetertext := s;
//всё готово. теперь можно узнать кол-во слов - sl.count
//или получить какое то слово - sl[номер]. Не забываем, что нумерация идет с нуля.
//после юзанья не забываем удалить sl
sl.free;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 1 июня 2008, 17:28
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 5 июня 2008, 10:03; участников в обсуждении: 2.
|
IlluminatI (статус: 2-ой класс), 1 июня 2008, 19:28 [#1]:
Уважаемый Вадим К!
Компилятор выдает ошибку на строках:
sl.delimeter := ' ';
sl.delimetertext := s;
т.к я не знаю таких функций у строки, поэтому не могу опр. причину ошибки сам, просьба помочь.
ошибки:
[Error] PredatorEnginie.pas(113): Undeclared identifier: 'delimeter'
[Error] PredatorEnginie.pas(114): Undeclared identifier: 'delimetertext'
Может нужно подключить какие нибудь модули в uses?
Заранее спасибо!
|
|
Вадим К (статус: Академик), 1 июня 2008, 20:47 [#2]:
sl - это не строка. А объект типа TStringList.
этот тип объявлен в Classes.
компилятор не должен ругнуться на этих строках.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
IlluminatI (статус: 2-ой класс), 3 июня 2008, 18:55 [#3]:
Ошибки все равно выскакивают!
Я не ас в программировании (пока)), может я не объявляю этот тип в Clases? Или он автоматически должен объявляться?
(если нет, подскажите плз где это)
|
|
Вадим К (статус: Академик), 3 июня 2008, 23:22 [#4]:
не надо объявлять тип Clases. Надо добавить в список uses юнит Classes. То есть, верхушка юнита должна выглядеть где то так
unit имяюнита;
interface
uses Windows, ....,..., Classes,...,...;
если слова uses нет в файле - допишите.
А у вас точно делфи? или может TurboPascal?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
IlluminatI (статус: 2-ой класс), 4 июня 2008, 20:26 [#5]:
Уважаемый Вадим К. Спасибо большое, пойду пробовать, а делфи от Turbo Pascal я еще вроде способен отличить =))))
|
|
IlluminatI (статус: 2-ой класс), 4 июня 2008, 21:08 [#6]:
Вадим К! Большое вам спасибо, дело было в том, что,
было: sl.delimeter а надо sl.delimIter;
вообщем синтаксическая ошибка
|
|
Вадим К (статус: Академик), 5 июня 2008, 10:03 [#7]:
вообще то здесь спасиба балами шуршит
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|