Форум «Всё о Паскале» _ Задачи _ РЕШЕНИЕ СИСТЕМЫ РЕГУЛЯРНЫХ УРАВНЕНИЙ. Не хватает длины string
Автор: Людмила 28.04.2010 20:32
Очень нужна помощь! Написала программу решения системы регулярных выражений. Как смогла, но зато сама. Возникла проблема при тестировании, когда размерность системы больше трех в результате строка намного больше 255, естественно на экран выдается совсем не то что ожидалось. Я полный ноль в паскале, писала несколько суток, при этом не спала практически, а на днях сдавать. Помогите разобраться, что можно сделать
Автор: Ozzя 28.04.2010 21:38
Использовать pchar http://forum.sources.ru/index.php?showtopic=40396
Добавлено через 2 мин. И тут тоже есть, оказывается http://forum.pascal.net.ru/index.php?showtopic=2361
Автор: Людмила 29.04.2010 3:34
Цитата(Ozzя @ 28.04.2010 20:38)
Использовать pchar http://forum.sources.ru/index.php?showtopic=40396
Добавлено через 2 мин. И тут тоже есть, оказывается http://forum.pascal.net.ru/index.php?showtopic=2361
Ни как не могу понять какие мне нужно сделать изменения что бы перейти на Pchar. Пыталась сделать по примеру на ссылках.... не получается.
Вот мои пременные:
type
{urType=array [1..MaxInt div SizeOf(string)] of string; TurType=^urType;}
reg_ur=record x:string; {левая часть уравнения Xn} ur:array [1..100] of string[70]; { коэфиценты уравнения: регулярные выражения, e,0} size:integer; end;
var T,T2:Text; S,C,st,ct,kt,mt,lt:String; n,i,j,k,l,h,g:integer; sis:array[1..8] of reg_ur;
Автор: Lapp 29.04.2010 4:18
Цитата(Людмила @ 29.04.2010 0:34)
Пыталась сделать по примеру на ссылках.... не получается.
Люд, что именно не получается? Чем точнее ты описываешь свою проблему, тем быстрее и лучше тебе ответят.
1. Какой у тебя компилятор? Рекомендую использовать FPC с http://FreePascal.org 2. Для того, чтоб использовать pChar, нужно подключить модуль Strings. 3. Нужно переделать не только сами строки, но и операции со строками.
Начни с ответа на первый вопрос, над остальными подумай.
Автор: Людмила 29.04.2010 4:33
Цитата(Lapp @ 29.04.2010 3:18)
1. Какой у тебя компилятор? Рекомендую использовать FPC с http://FreePascal.org
У меня TP7. FreePascal пробовала установить выдает ошибку. потратила на него пол дня и так и не смогла.
Цитата(Lapp @ 29.04.2010 3:18)
2. Для того, чтоб использовать pChar, нужно подключить модуль Strings. 3. Нужно переделать не только сами строки, но и операции со строками.
модуль подключала, и операции тоже переделывала, но в результате на экране зюки
Проблема в том, что пред написанием программы пытала разобраться с динамическими структурами, но увы не смогла понять как они работают. Решила пойти путем где хоть чуть чуть что то могу сама. При разрядности системы больше двух, количество коэффициентов в уравнениях превышает 255 и естественно в результате часть обрезается. Времени все переделывать нет. Если можно пример объявления моих переменных с учетом нужных изменений?
Автор: Lapp 29.04.2010 4:40
Цитата(Людмила @ 29.04.2010 1:33)
можно пример объявления моих переменных с учетом нужных изменений?
Можно, конечно, но это тут не главное и вряд ли поможет. Лучше бы ты привела пару фрагментов с переделками.. Во-первых, скажи точнее, какие именно строки переполняются. Например, у тебя в записи есть массив из string[70] - явно их длины тебе хватает, если ты даже 255 не использовала. Остальное - я же не знаю, какие строки ты как используешь.. По идее, если строка s нужна длиннее, чем 255, то вместо s: string; нужно писать s: pChar; Вот и все объявление. Ну, помогло тебе оно? Главное не в этом. Главное - в работе с ними.
Автор: TarasBer 29.04.2010 13:07
> Главное - в работе с ними.
Ага, главный геморрой - в работе с ними. Я как-то попробовал, даже получилось, но нервов на это я потратил немало. Я бы забил на это и скачал другой компилятор, который умеет работать со строками любой длины (при этом ничего переписывать в коде не надо, если только вы не баловались с S[0]), автоматически выделяя и освобождая для них память.
Автор: Людмила 29.04.2010 16:03
Цитата(TarasBer @ 29.04.2010 12:07)
скачал другой компилятор, который умеет работать со строками любой длины (при этом ничего переписывать в коде не надо
не можете уточнить какой? (что бы переделывать не надо было)
Автор: Ozzя 29.04.2010 16:18
Цитата
не можете уточнить какой? (что бы переделывать не надо было)
Цитата
Рекомендую использовать FPC с http://FreePascal.org
Тип ansistring
Автор: Людмила 29.04.2010 20:39
Цитата(Ozzя @ 29.04.2010 15:18)
Тип ansistring
Попробовала сделать так, но ситуация не изменилась при разрядности 2 все нормально, а при большем числе X не хватает длины строки. Может надо как ни будь явно указывать максимальную длину?
Автор: volvo 29.04.2010 21:35
Может быть уже пора представить программу? Ибо говорить можно сколь угодно долго, но это будет пустой треп, пока не видим кода - "Ошибка в 15-ой строке", и ничего кроме этого сказать нельзя.
Автор: Ozzя 29.04.2010 21:37
Людмила, Вам не кажется, что получается гадание на кофейной гуще? Как-то бы поконкретнее вопрос, что-ли?