![]() |
|
#1
|
|||
|
|||
![]() Решаю задачу по программированию и вылезает такая вот ошибка.
Собственно код: Код:
begin assign(input,'lookandsay.in'); readln(n); setlength(str,n); for i:=1 to n do begin readln(st); m:=length(st); for y:=1 to m-1 do begin if st[y]=st[y+1] then k:= k+1 else begin str[i]:=str[i]+inttostr(k)+st[y]; k:=1; end;//else end;// for y end;//for i assign(output,'lookandsay.out'); for i:=1 to n do writeln(str[i]); end. Подскажите, где ошибка. Заранее спасибо. |
#2
|
|||
|
|||
![]() Во первых укажи типы переменных, а во второх кто файлы открывать/закрывать будет?
|
#3
|
|||
|
|||
![]() Код:
var i,y,n,k,m:integer; st:string; str: array of string; |
#4
|
|||
|
|||
![]() файл на запись/дозапись открой.
|
#5
|
|||
|
|||
![]() Всмысле reset,rewrite? Пробовал- не помогает.
|
#6
|
|||
|
|||
![]() Ошибка означает доступ к обьекту которого не существует (обычно). Делаем точну остановки на начале функции и далее трасировкой нах=одим ошибку.
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#7
|
|||
|
|||
![]() Вот как типы указал, сразу стало ясно
Код:
var i, y, n, k, m: Integer; st: String; str: array of String; // массив динамический!!! Начинается с нуля! Input, Output: TextFile; begin AssignFile(Input,'lookandsay.in'); // инициализация Reset(Input);// окрытие Readln(Input, n); // читается так Setlength(Str, n); for i := 0 to n-1 do // здесь у тебя была ошибка begin Readln(Input, st); m := length(st); k := 1; for y := 1 to m-1 do begin if st[y]=st[y+1] then Inc(k) else begin str[i] := str[i]+ IntToStr(k) + st[y]; k := 1; end; end; end; CloseFile(Input); // закрываешь AssignFile(Output, 'lookandsay.out'); // все аналогично ReWrite(Output); for i:=0 to n-1 do Writeln(Output, str[i]); CloseFile(Output); |
#8
|
|||
|
|||
![]() Возникает на end. т.е. при завершении программы.
Drozh, если сделать, как ты показал, возникает другая ошибка - Access violation at adress такой-то in module 'coriede70.bpl'. Последний раз редактировалось [The]Unknown_Master, 03.11.2008 в 15:52. |
#9
|
|||
|
|||
![]() Хм... У меня все работало... У тебя файлы в дирректории с программой присутствуют? Или просто приведи код полностью
|
#10
|
|||
|
|||
![]() Цитата:
Видимо дебагер в семерке как то плохо работает, первая ошибка должна была словиться в конце цикла. Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#11
|
|||
|
|||
![]() Drozh, файлы присутствуют.Пробовал исправить свой, пробовал скопировать и вставить твой код.Ноль эффекта.Хотя нет - стала вылезать другая ошибка(((
|
#12
|
|||
|
|||
![]() Ты чтото не так используешь, приведи свой код полностью
|
#13
|
|||
|
|||
![]() Сегодня нашёл ошбку- она заключалась в использовании Delphi 7 под
висту.Перенёс на XP - всё заработало((( |
#14
|
|||
|
|||
![]() Гм... я свои програмки проверял на висте - все работает.
Единственное, что отказалось работать - одна штука, которая пользует SQLite, но об этом и так известно, что на висте работать не будет (хотя я слышал, что какими-то шаманскими танцами можно и ее заставить работать). |
#15
|
|||
|
|||
![]() Дело в том, что элементы массива String могут быть разные по длине. А Дельфи обращается к этим самым элементам по адресу в памяти и крайне редко (100% случаев) сбивается.
Я где-то читал, что надо обязательно ограничивать длину строки, когда создаешь динамический массив. |