0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
||||||
1 | ||||||
Работа с файлом - переменная в коде не меняет своего значения08.04.2015, 19:32. Показов 1506. Ответов 18
Метки нет (Все метки)
Добрый день!
Помогите пожалуйста с программой. В данной процедуре, программа открывает файл для чтения(в файле написан код какой-либо программы). Flag=false. Как только в строке появляется слово "begin" программа присваивает flag=true. Но сейчас программа просто проходит мимо. В результате в программе flag всегда равен false. Помогите пожалуйста исправить это.
0
|
08.04.2015, 19:32 | |
Ответы с готовыми решениями:
18
TextBox не меняет своего значения Переменная S в процедуре не меняет значения Переменная не меняет значения после обновления ее источныка с которого она и получила значение Работа с типизированным файлом: запись Шестнадцатеричного значения из Edit1 в файл |
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
|
||||||||||||||||
09.04.2015, 03:46 | 2 | |||||||||||||||
то бишь вы всё наоборот делаете. вообще, в вашем случае flag и не нужен. вместо
1
|
Модератор
|
|
09.04.2015, 08:25 | 3 |
Задание-то какое?
Добавлено через 12 минут Это к тому, что перечень замечаний к коду больше самого приведенного кода программы... Начиная с того, что даже вы не ставите пробела после "begin", но почему-то надеетесь его там найти; хотите найти оператор присваивания в строке, начинающейся с "begin", но другие строки вас не интересуют; игнорируете регистронезависимость, а паскали не различают заглавные и строчные буквы; и так далее... Возможно у вас именно такое задание, но не видя его, не узнать.
0
|
CAPITAL OF ROCK!
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
|
|
09.04.2015, 11:07 | 4 |
bormant, я хотел было написать много-много текста по поводу листинга, но было лень.
код, к слову, ищет оператор присваивания только в строке, содержащей begin. что нелогично. но к теме вопроса это уже не относится.
0
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
09.04.2015, 16:52 [ТС] | 5 |
Нужно написать программу, определяющую наличие неописанных идентификаторов в коде программы на Pascal.
0
|
Супер-модератор
|
|
09.04.2015, 16:59 | 6 |
Оно тебе надо, писать это? Не проще было бы откомпилировать код консольным компилятором, и парсить сообщения о результатах компиляции? В разы быстрее будет. Ну, или брать в \fpc-2.6.4.source\fpc-2.6.4\utils исходник ptop.pp, и смотреть, как там делается разбор программы.
0
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
09.04.2015, 17:16 [ТС] | 7 |
К сожалению от этого не сбежать. Дали задание по курсовой, вот и пишу
0
|
Модератор
|
|
09.04.2015, 17:33 | 8 |
я вас немножко огорчу -- подход к поиску неописанных идентификаторов вы выбрали вряд ли верный. Просто напомню, что в программе бывают комментарии ({ ... }, (* ... *)), строковые литералы ('...'), процедуры и функции со своими собственными разделами описаний переменных, процедуры и функции могут быть вложенными, бывают директивы условной компиляции ({$IFDEF}, {$IFNDEF}, {$IFOPT}, {$ENDIF}), отсекающие часть кода в том или ином варианте. Поэтому просто поиск begin/:= вам сильно не поможет.
1
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|||||||||||
09.04.2015, 18:34 [ТС] | 9 | ||||||||||
А что можете посоветовать?
Добавлено через 11 минут Я даже и не знаю других способов как можно сделать это Добавлено через 6 минут Можете помочь сделать, на основе моей программы, программу, которая ищет неописанные переменные в файле в котором хранится вот такой код:
0
|
Супер-модератор
|
|
09.04.2015, 21:26 | 10 |
Я выше написал как минимум 2 способа. Оба рабочие (особенно первый). Также можно взять класс TParser, и с его помощью производить разбор программы. Но то, что должен быть именно разбор, а не просто поиск подстрок - очевидно.
0
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
10.04.2015, 17:42 [ТС] | 11 |
Напишите пожалуйста пример работы по такому способу. Паскаль начал изучать не так уж давно, поэтому понять принцип работы по вашему способу не могу
0
|
Супер-модератор
|
||||||
11.04.2015, 01:09 | 13 | |||||
Сообщение было отмечено Zed11 как решение
Решение
1
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
11.04.2015, 12:38 [ТС] | 14 |
Понял, спасибо, буду работать.
0
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
13.04.2015, 17:53 [ТС] | 15 |
Добрый день!
Подскажите пожалуйста, не до конца понял Вашу программу. Смотрите, в этой строке мы выбираем файл, который будем компилировать Далее в этой строке мы создаем новый файл t215.txt И вот не совсем понятны вот эти строки: В первой мы запускаем компилятор, единственное не пойму зачем мы используем -b ' + path + ' -Fe' + outfile; А вот вторая строка не понятна. Объясните пожалуйста, если Вам не сложно Добавлено через 35 минут И ещё, часто бывает что пишет Fatal: Can't open file "Test.pas" Хотя путь указан правильно. Может ли это быть из-за того, что названия некоторых папок на русском?
0
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
||||||
13.04.2015, 18:03 [ТС] | 16 | |||||
Точнее теперь выдает вот такую ошибку(на фото).
Код программы:
0
|
Супер-модератор
|
|
13.04.2015, 18:17 | 17 |
опция -b - для полной пересборки программы, а опция -Fe - для того, чтобы сообщения об ошибках не выводились в консоль, а сохранялись в файл с заданным именем.
Ну правильно. Тебе же не удалось откомпилировать файл, вот компилятор и вернул ошибку. Все ошибки при этом сохранились в txt-файл. Если в программе нет test.pas нет ошибок - то этого сообщения не будет.
1
|
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 151
|
|
13.04.2015, 19:21 [ТС] | 18 |
А, всё, понял. Забыл про файл. Спасибо!
0
|
Модератор
|
|
14.04.2015, 07:36 | 19 |
volvo,
Опции у FPC регистрозависимые, пересборка -- это -B, а -b -- это генерация "browse info".
0
|
14.04.2015, 07:36 | |
14.04.2015, 07:36 | |
Помогаю со студенческими работами здесь
19
Передача своего своего значения в HIWORD и LWORD параметра WPARAM, реально? Функция не меняет своего значенияф между вызовами Переменная не меняет свое значение Переменная меняет значение в зависимости от времени Глобальная переменная не меняет значение в Асинхронном методе Глобальная переменная после вызова функции меняет значение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |