IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Обнуление строк при использовании файлов с кодом
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Мужской

Репутация: -  0  +


После использования файлом блоков-функций из других 5-ти файлов
строки не обнуляются несмотря на то, что в каждом блоке-функции стоит
Delete(строка,1,20);. Т.е. тогда, когда используется следующая блок-
функция выводит результат с остатками строки предыдущего файла,
содержащего функцию со строкой.
В чем дело? Должны быть ответы и без хлама всякого, который выводится
из предыдущей блок-функции.
Вот пример файла программы
program prog24;
uses crt;
var
S1,S2,S3,S4,S5,S6:string;
i,L:integer;
{$I c:\prog23a}
{$I c:\prog23b}
{$I c:\prog23v}
{$I c:\prog23g}
{$I c:\prog23d}

begin

RightBlank(S1);
BlankDel(S2,S3);
Upper(S4,S5);
Newstr(S6,L);
Beep;

end.

и пример одного из 5 файлов, содержащих функции
(остальные подобны вплане того, что самостоятельно,
когда их переделываешь в программу они работают)
function Newstr(S6:string; L:integer):integer;
Var
i : integer;
Begin
WriteLn('Zapolnyaem stroku simvolami C. Zadaniye 23 b');
WriteLn('Vvedite kolichestvo simvolov L');
ReadLn(L);
FillChar(S6[i], L, 'C');
S5[0]:=#80; { Устанавливаем байт длины }
for i:=1 to 20 do
begin
Write(S6[i]);
end;
Writeln(' ');
Write('Nagmite Enter');
Delete(S6,1,20);
readln;
End;



--------------------
__________________________
Мой диплом ПГС
http://nashidiplomy.googlepages.com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Значит, так: все прекрасно работает... Просто для того, чтобы это откомпилировалось, надо добавить самой первой строкой программы:
{$V-}
, иначе Паскаль не позволяет передавать тип String[20] в параметр, имеющий просто тип String (т.е. длина строк должна совпадать идеально... {$V-} снимает это ограничение)...

А вот насчет процедуры NewStr - ты неправильно заполняешь строку...
 FillChar(S6, L, 'C'); { Здесь все в порядке }
S5[0]:=#80; { Во-первых, почему S5 а не S6 ??? }

ну, и потом, я так понял, что это - пример из Борландовского файла помощи для Турбо-Паскаля? Но ведь там описана строка длиной в 80 символов, а ты откуда взял это самое число 80?
Вот правильный вариант для твоего случая:
FillChar(S6, L, 'C');
S6[0] := Chr(L); { <--- устанавливаешь длину строки !!! }
WriteLn(S6); { <--- именно так !!! }

Если ты не печатаешь строку через WriteLn, а печатаешь посимвольно, то смысла в использовании FillChar просто нет, т.к. тут самое главное - правильно установить длину строки, и сделать это так, чтобы WriteLn отобразил строку корректно !!! Символ за символом-то ясно, что оно будет в любом случае выдавать правильный результат... Вот и у тебя строка заполнена неверно, а результат будет выдаваться похожий на правду...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Shults99   Обнуление строк при использовании файлов с кодом   27.09.2005 21:50
klem4   пока не вникал что ты там написал, но если тебе на…   27.09.2005 22:41
Shults99   klem4 Все исправил - заменил на s=''; во в…   27.09.2005 23:36
klem4   Так, для начала , зачем вот этот изврат ? {…   27.09.2005 23:51
GoodWind   заполнять надо не элемент, а всю строку :) FillC…   28.09.2005 11:28
Shults99   klem4 i:=1; поставил. {$I c:\prog23a} - …   28.09.2005 19:56
volvo   Правда? А что именно у тебя делает функция BlankDe…   28.09.2005 20:06
klem4   Согласен с Volvo, я тоже об этом думал зы i:=1 т…   28.09.2005 20:59
Shults99   volvo Я думал, что будет достаточно того, что я пр…   28.09.2005 22:54
klem4   Елки - палки ! Поставиь в заголовках функций v…   28.09.2005 22:58
volvo   Shults99, function BlankDel(Var S2,S3:string):int…   28.09.2005 23:02
Shults99   klem4 В следующий раз - без ёлы-палы. Не хочешь, н…   28.09.2005 23:40
volvo   Так, заканчиваем сеанс гадания. Заархивируй все фа…   28.09.2005 23:52
volvo   Значит, так: все прекрасно работает... Просто для …   29.09.2005 5:20
Shults99   Наконец-то все работает. Только ещё с 1-цы начинат…   29.09.2005 21:24


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.05.2024 22:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name