Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2006, 08:16   #1
Stormzcooler
 
Регистрация: 15.12.2006
Сообщений: 4
По умолчанию Считывание строки из файла до символа

Ситуация есть файл edit1.txt в нём записаны слова через символ "&" например:
привет&hello
пока&goodbye
сегодня&today
.....и т.д.
как сделать чтобы при запуске программы т.е. при активации формы, слова из файла edit1.txt выводились в ListBox1 только до символа "&" и так каждую строку.
Второе что надо:
в этой де форме есть "edit1" и "button1" как сделать так чтобы, при вводе слова например "привет" делался поиск по файлу и выводилось значение которое стоит за символом "&". Выводилось например в "label1".
Stormzcooler вне форума Ответить с цитированием
Старый 15.12.2006, 08:49   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

берёться строка, всё что до символа в один массив, всё что после символа в другой. У тебя получаеться 2 массива и под одинаковыми номерами слова из одной строчки.
Alar вне форума Ответить с цитированием
Старый 15.12.2006, 08:50   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

s:string;
n:integer;
считываешь строк s
n:=pos('&',s) - позиция символа "&" в строке
copy(s,1,n) - символы до "&"
copy(s,n+1,length(s)-n) - символы после "&"

работает если 1 символ "&".
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 15.12.2006, 09:49   #4
Stormzcooler
 
Регистрация: 15.12.2006
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
берёться строка, всё что до символа в один массив, всё что после символа в другой. У тебя получаеться 2 массива и под одинаковыми номерами слова из одной строчки.
а по подробней мона?

так а как сделать поиск по файлу чтобы он искал значиние слова до символа & и выдавал значение то которое после символа & в лабел например....

Последний раз редактировалось zetrix; 15.12.2006 в 10:48.
Stormzcooler вне форума Ответить с цитированием
Старый 15.12.2006, 16:12   #5
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

type
TMass = array[0..1023] of string;
TBookRec = record
x,y: TMass;
Count: integr;
end;

procedure ReadBook(fname: string; symb: Char; var x: TBookRec);
var
i: integer;
f1: TextFile;
buffer: string;
begin
AssignFile(f1,fname);
Reset(f1);
i:=0;
repeat
Readln(f1,buffer);
x.x[i]:=Copy(buffer,1,Pos(''+Symb,buffer)-1);
x.y[i]:=Copy(buffer,Pos(''+Symb,buffer)+1 ,Length(buffer)-Pos(''+Symb,buffer)-1);
Inc(i);
until Eof(f1);
CloseFile(f1);
x.Count:=i+1;
end;

function FindIt(x: TBookRec; wrd: string): string;
var i,j: integer;
begin
j:=-1;
for i:=0 to x.Count do if x.x[i]=wrd then
begin
j:=i;
break;
end;
if j=-1 then Result:='Word is not found' else Result:=x.y[j];
end;

P.S. На правильность работы не проверял -> надо проверить!
А сам принцип, я думаю, понятен.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 17.12.2006, 05:52   #6
Stormzcooler
 
Регистрация: 15.12.2006
Сообщений: 4
По умолчанию

procedure TForm1.Button3Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
i: integer;
begin
fName := 'Edit1.Txt';
AssignFile(f, fName);
Append(f); // открыть для добавления
for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля
if (Length(memo1.text)=0) or (Length(memo2.text)=0)
then ShowMessage('Ошибка ввода данных.'
+#13+'Bce поля должны быть заполнены.')
else
writeln(f, Memo1.Lines[i],'&',Memo2.lines[i]);
MessageDlg('Данные добавлены',mtInformation,[mbOk],0);
CloseFile(f); // закрыть файл
memo1.Clear;
memo2.Clear;
Listbox1.Refresh;
end;


Это код для того чтобы записывал в файл слова через знак "&" но когда добавляешь в файл получается такая фигня:

Добрый день&Good Day
&
под&under
&
досвидания&Good-bye
&




как сделать чтобы знака "&" во второй строке не появлялось...?подскажите где косяк в коде...
Stormzcooler вне форума Ответить с цитированием
Старый 17.12.2006, 12:21   #7
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

С паскаля пересел...
writeln(f, Memo1.Lines[i]+'&'+Memo2.lines[i]);
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 18.12.2006, 15:01   #8
Stormzcooler
 
Регистрация: 15.12.2006
Сообщений: 4
По умолчанию

такая же фигня
Stormzcooler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание интов из файла kydja Общие вопросы C/C++ 1 17.05.2008 18:16
Как из строки получить первые три символа experts91 Помощь студентам 2 07.04.2008 21:58
удаление символа окончания строки Xozer SQL, базы данных 1 07.02.2008 12:19
Считывание данных из файла inret Общие вопросы Delphi 4 18.11.2007 18:03
Считывание из файла DimkinStd Общие вопросы Delphi 7 24.01.2007 19:18