Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
1 / 1 / 0
Регистрация: 19.09.2019
Сообщений: 10

Цикл if внутри цикла for

19.09.2019, 11:21. Показов 5349. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем сюда зашедшим, пишу код на Pascal для программы isis/base возник вопрос, вот этот код отлично вынимает значения TRUE и FALSE в текстовый файл по указанному пути если поле отмечено то TRUE, если нет то FALSE

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{$C isisbase.inc}
 
const
path = 'C:\cf\config.txt';
 
var
b : boolean;
FieldNum : integer;
tr, fl : string;
test : text;
 
begin
 
tr := 'TRUE';
fl := 'FALSE';
FieldNum := 1;
 
repeat
b := GetFieldMark(FieldNum);
if GetFieldMark(fieldNum) = TRUE then
begin
OpenFile(path, 'w', test );
WriteLn(test, tr);
end
else
if GetFieldMark(FieldNum) = FALSE then
begin
OpenFile(path, 'w', test );
WriteLn(test, fl);
end;
FieldNum := FieldNum + 1;
until FieldNum>100;
CloseFile(test);
end.
Проблема в том чтобы потом по условию сохраненному в текстовом файле так же само отметить эти поля в базе при подгрузке программы, цикл repeat почему то выдает fatal error хотя компилируется нормально (может какие-то свои приколы программы) вот на всякий случай его оставлю:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{$C isisbase.inc}
 
const
path = 'C:\cf\config.txt';
 
var
endUpdate,
b : boolean;
FieldNum,
fieldNum0 : integer;
externalName,
tr,
fl : string;
test : text;
 
begin
 
tr := 'TRUE1';
fl := 'FALSE1';
FieldNum := 1;
fieldNum0 := 0;
 
repeat
OpenFile(path, 'r', test );
ReadLn(test, externalName);
if externalName = tr then
begin
SetFieldMark(FieldNum, TRUE);
end
else
if externalName = fl then
begin
SetFieldMark(FieldNum, FALSE);
end;
FieldNum := FieldNum + 1;
until FieldNum>100;
CloseFile(test);
end.
Решено было пойти другим путем и написать через цикл for вот код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{$C isisbase.inc}
 
const
path = 'C:\cf\config.txt';
 
var
endUpdate,
b : boolean;
FieldNum,
fieldNum0 : integer;
externalName,
tr,
fl : string;
test : text;
 
begin
 
tr := 'TRUE';
fl := 'FALSE';
FieldNum := 1;
fieldNum0 := 0;
 
for FieldNum := 1 to 100 do
begin
OpenFile(path, 'r', test );
ReadLn(test, externalName);
if externalName = tr then
begin
SetFieldMark(FieldNum, TRUE);
end
else
if externalName = fl then
begin
SetFieldMark(FieldNum, FALSE);
end;
FieldNum := FieldNum + 1;
end;
CloseFile(test);
end.
проблема в том что он отмечает эти значения не по порядку как должно быть (например в цикле repeat он записывает в текстовик TRUE и FALSE по порядку) ,а как-то в разнобой( тоесть из текстовика этот цикл берет значения не по порядку), подскажите пожалуйста где я ошибся и как это лучше написать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2019, 11:21
Ответы с готовыми решениями:

Цикл For. Вывод цикла внутри цикла
Всем привет, есть проблемка. Код рабочий но при вводе среднего бала допустим выше несуществующего выдаёт 5 раз "Таковых нет"....

Цикл внутри цикла
Здравствуйте, делаю скрипт для массового добавления урлов и кеев в базу тдс. Нужно чтобы переменная $poziciya увеличивалась на 1. То есть...

Цикл внутри цикла!
Здравствуйте. Имеется БД из 2 таблиц. Подключена к программе через АДО. Нужно вывести отчет в ексель по группам: т.е. сначала вывести...

4
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
19.09.2019, 12:19
Лучший ответ Сообщение было отмечено xvios как решение

Решение

Что у Вас в цикле FOR делает строка
Pascal
1
FieldNum := FieldNum + 1;
Вы не доверяете компилятору, думаете он без Вас не справится?
1
1 / 1 / 0
Регистрация: 19.09.2019
Сообщений: 10
19.09.2019, 13:53  [ТС]
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Что у Вас в цикле FOR делает строка
Pascal
1
FieldNum := FieldNum + 1;
Вы не доверяете компилятору, думаете он без Вас не справится?
не доверяю, когда я убираю 'FieldNum := FieldNum + 1;'
он тупо берет и фигачит все поля без разбору в не зависимости TRUE или FALSE они в текстовике,
мне кажется что цикл не подтягивает код после else
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
19.09.2019, 14:02
Лучший ответ Сообщение было отмечено xvios как решение

Решение

Цитата Сообщение от xvios Посмотреть сообщение
он тупо берет и фигачит все поля без разбору в не зависимости TRUE или FALSE
Конечно, он тупо каждую итерацию открывает файл.
1
1 / 1 / 0
Регистрация: 19.09.2019
Сообщений: 10
19.09.2019, 14:29  [ТС]
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Конечно, он тупо каждую итерацию открывает файл.
Спасибо огромное за ваши комментарии!!! почитал ваши замечания, учел их и переписал код, теперь все работает так как нужно.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
program RowMenu;
 
{$C isisbase.inc}
 
const
path = 'C:\cf\config.txt';
 
var
endUpdate,
b : boolean;
FieldNum,
fieldNum0 : integer;
externalName,
tr,
fl : string;
test : text;
 
begin
 
tr := 'TRUE1';
fl := 'FALSE1';
FieldNum := 1;
fieldNum0 := 0;
 
 
OpenFile(path, 'r', test );
for FieldNum := 1 to 62 do
begin
ReadLn(test, externalName);
if externalName = tr then
begin
SetFieldMark(FieldNum, TRUE);
end
else
if externalName = fl then
begin
SetFieldMark(FieldNum, FALSE);
end
else
if FieldNum = 62 then
begin
CloseFile(test);
end;
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2019, 14:29
Помогаю со студенческими работами здесь

Цикл внутри цикла (While)
Всем привет. Никак не получается организовать цикл внутри цикла на SQL Server 2012. В итоге отрабатывает только первый цикл. На...

Цикл внутри цикла
Есть вопрос, можно ли задать цикл внутри цикла? Вот в этой программе чтоб j прошёл условие while(j<9) и выполнился цикл while (i<9)...

Цикл внутри цикла
Возможно ли сделать ветвлением? Здесь же не одно истинное значение, как и ложное

Цикл внутри условия цикла
Можно ли внутрь условия засунуть цикл как показано ниже.Если да то что тут не так подскжите. Гугл не отвечал на мои запросы обращаюсь к...

Можно ли располагать цикл внутри цикла?
Здравствуйте. Можно ли располагать цикл внутри цикла? for(....) { if() { for(....) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru