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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 09:07   #1
nerZEROn
 
Аватар для nerZEROn
 
Регистрация: 07.01.2009
Сообщений: 5
Восклицание Компонент Memo и работа с *.ini-файлами

Всем привет! Мне нужно сделать программу "Лексический анализатор". Принцип работы такой: программа должна считывать текст (кусочек программы, написанный на другом языке) из поля Memo1 (подгружается из *.txt файла) и по нажатию соответствующей кнопки переводить его в цифровой вид в поле Memo2... То есть я предварительно создаю таблицу лексем и кодов, где каждое "слово" текста у меня пронумеровывается. В соответствии с этим в Memo2 получаются одни цифры.

Вот кусочек кода программы:
Do 100 i=1, N
accept 5, A(i), B(i), C(i).
if (A(i).EQ.0.OR.B(i).EQ.0.OR.C(i).EQ. 0) stop.
P=A(i)+B(i)+C(i)
type 6.P
100 continue


А вот пример таблицы (привожу в пример две строчки куска программы):
Do - 1
100, 1, 5, 6 (константы) - 2
i, N, A(i), B(i), C(i) (переменные) - 3
= - 4
, - 5
accept - 6
. - 7

А это должно получится в Memo2:
1 2 3 4 2 5 3
6 2 5 3 5 3 5 3 7


У меня есть мысль создать *.ini файл с данной таблицей, но не знаю как реализовать перевод из "слов" в цифры... Напишите, пожалуйста, кто знает код для кнопки! Вполне возможно, что есть еще более легкий способ решения.. но, по-моему, с ini программа получится гораздо универсальнее...

Последний раз редактировалось nerZEROn; 07.01.2009 в 09:13.
nerZEROn вне форума Ответить с цитированием
Старый 07.01.2009, 20:51   #2
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Перевод из слов в цифры делается так:
var a:integer;
s:shortstring;
s = "1234";
a:=StrToInt(s);

Или же если дробные числа...
var a:real;
s:shortstring;
s:="33.2525";
a:=StrToFloat(s);
iankov вне форума Ответить с цитированием
Старый 07.01.2009, 21:57   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Раздел:
Цитата:
Общие вопросы Delphi
Простите, мне казалось, что с Дельфи я немножко знаком, но вот это меня повергло в сомнение:
Код:
Вот кусочек кода программы:
Do 100 i=1, N
accept 5, A(i), B(i), C(i).
if (A(i).EQ.0.OR.B(i).EQ.0.OR.C(i).EQ.0) stop.
P=A(i)+B(i)+C(i)
type 6.P 
100 continue
О дальнейшем и говорить страшно - сплошная непонятица...
Это что - действительно паскаль Дельфи??? Неужели я так безнадежно отстал?
Или раздел для темы - "Общие вопросы Delphi" не совсем удачно выбран?

Последний раз редактировалось mihali4; 08.01.2009 в 00:37.
mihali4 вне форума Ответить с цитированием
Старый 08.01.2009, 00:16   #4
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Это фортран =)
iankov вне форума Ответить с цитированием
Старый 08.01.2009, 01:29   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mihali4
Это что - действительно паскаль Дельфи??? Неужели я так безнадежно отстал?
коллега, спокойно! Главное - без паники!

на Дельфи нужно написать программу лексического анализатора -
а вот анализировать в данном случае нужно программу на другом языке (на Fortran)...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.01.2009, 10:57   #6
nerZEROn
 
Аватар для nerZEROn
 
Регистрация: 07.01.2009
Сообщений: 5
По умолчанию

Вообще верно, это Фортран =) А кто-нибудь знает, как с .ini файла считывать нечто вроде вот этого:

Do=1
100=2
1=2
5=2
6=2

и при этом чтобы автоматом писалось в Memo2 код лексемы? И еще я не понимаю вот чего: Memo, это не EditBox с одной строкой, в Memo их много... как можно задать программе, какую именно считывать строку?
nerZEROn вне форума Ответить с цитированием
Старый 08.01.2009, 11:06   #7
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Код:
Memo1.Lines.Strings[i]
Вместо I вставь номер нужной
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 08.01.2009, 11:07   #8
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Что бы считывать используй следуеще

Код:
var
f:TIniFile;
Begin
*********
Memo1.text:=f.ReadString('Do','1','');
********
end;
И там уже модернизируй как хошь.
Шипулин А. В.

Последний раз редактировалось Шульц; 08.01.2009 в 11:10. Причина: Уточнение
Шульц вне форума Ответить с цитированием
Старый 08.01.2009, 11:16   #9
nerZEROn
 
Аватар для nerZEROn
 
Регистрация: 07.01.2009
Сообщений: 5
По умолчанию

Так вы мне с *.ini то поможете? Довольно часто встречается этот файл, содержащий, к примеру, настройки самой программы. Вот по какому принципу идет с них считываение?

Там ведь что-то типа (пример "от балды" ):
[Settings]
Height=768
VideoType=1
...

Вот вроде бы все легко.. а нуба возникают проблемы
nerZEROn вне форума Ответить с цитированием
Старый 08.01.2009, 11:26   #10
nerZEROn
 
Аватар для nerZEROn
 
Регистрация: 07.01.2009
Сообщений: 5
По умолчанию

Пасиба =) а можно ли сделать так? По нажатию кнопки, запускающий процесс анализа, из .ini файла будет в буфер считываться все значения, затем тут же идет сам процесс анализа, и в Memo2 записываются значения, но уже в цифровом виде.
nerZEROn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент Memo Uli9 Помощь студентам 2 07.12.2008 00:00
работа с INI файлами Titan123 Общие вопросы Delphi 1 30.08.2008 16:31
Проблемы с Ini-файлами Азазель Общие вопросы Delphi 6 08.09.2007 19:24
компонент Memo в delphi vvaassiill Помощь студентам 1 29.05.2007 20:47
работа с .ini файлами PAVEL315 Общие вопросы Delphi 3 22.11.2006 22:28