Помощь - Поиск - Пользователи - Календарь
Полная версия: РЕШЕНИЕ СИСТЕМЫ РЕГУЛЯРНЫХ УРАВНЕНИЙ. Не хватает длины string
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Людмила
Очень нужна помощь!
Написала программу решения системы регулярных выражений. Как смогла, но зато сама. Возникла проблема при тестировании, когда размерность системы больше трех в результате строка намного больше 255, естественно на экран выдается совсем не то что ожидалось. Я полный ноль в паскале, писала несколько суток, при этом не спала практически, а на днях сдавать. Помогите разобраться, что можно сделать !mol1.gif
Ozzя
Использовать pchar
http://forum.sources.ru/index.php?showtopic=40396

Добавлено через 2 мин.
И тут тоже есть, оказывается
Строки
Людмила
Цитата(Ozzя @ 28.04.2010 20:38) *

Использовать pchar
http://forum.sources.ru/index.php?showtopic=40396

Добавлено через 2 мин.
И тут тоже есть, оказывается
Строки


Ни как не могу понять какие мне нужно сделать изменения что бы перейти на Pchar. cray.gif Пыталась сделать по примеру на ссылках.... не получается.

Вот мои пременные:

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 0:34) *
Пыталась сделать по примеру на ссылках.... не получается.
Люд, что именно не получается? Чем точнее ты описываешь свою проблему, тем быстрее и лучше тебе ответят.

1. Какой у тебя компилятор? Рекомендую использовать FPC с http://FreePascal.org
2. Для того, чтоб использовать pChar, нужно подключить модуль Strings.
3. Нужно переделать не только сами строки, но и операции со строками.

Начни с ответа на первый вопрос, над остальными подумай.
Людмила
Цитата(Lapp @ 29.04.2010 3:18) *

1. Какой у тебя компилятор? Рекомендую использовать FPC с http://FreePascal.org

У меня TP7. FreePascal пробовала установить выдает ошибку. потратила на него пол дня и так и не смогла.

Цитата(Lapp @ 29.04.2010 3:18) *

2. Для того, чтоб использовать pChar, нужно подключить модуль Strings.
3. Нужно переделать не только сами строки, но и операции со строками.

модуль подключала, и операции тоже переделывала, но в результате на экране зюки sad.gif

Проблема в том, что пред написанием программы пытала разобраться с динамическими структурами, но увы не смогла понять как они работают. Решила пойти путем где хоть чуть чуть что то могу сама. При разрядности системы больше двух, количество коэффициентов в уравнениях превышает 255 и естественно в результате часть обрезается. Времени все переделывать нет. Если можно пример объявления моих переменных с учетом нужных изменений?
Lapp
Цитата(Людмила @ 29.04.2010 1:33) *
можно пример объявления моих переменных с учетом нужных изменений?
Можно, конечно, но это тут не главное и вряд ли поможет. Лучше бы ты привела пару фрагментов с переделками..
Во-первых, скажи точнее, какие именно строки переполняются. Например, у тебя в записи есть массив из string[70] - явно их длины тебе хватает, если ты даже 255 не использовала. Остальное - я же не знаю, какие строки ты как используешь..
По идее, если строка s нужна длиннее, чем 255, то вместо
s: string;
нужно писать
s: pChar;
Вот и все объявление. Ну, помогло тебе оно? Главное не в этом. Главное - в работе с ними.
TarasBer
> Главное - в работе с ними.

Ага, главный геморрой - в работе с ними. Я как-то попробовал, даже получилось, но нервов на это я потратил немало.
Я бы забил на это и скачал другой компилятор, который умеет работать со строками любой длины (при этом ничего переписывать в коде не надо, если только вы не баловались с S[0]), автоматически выделяя и освобождая для них память.
Людмила
Цитата(TarasBer @ 29.04.2010 12:07) *

скачал другой компилятор, который умеет работать со строками любой длины (при этом ничего переписывать в коде не надо

не можете уточнить какой? (что бы переделывать не надо было)
Ozzя
Цитата
не можете уточнить какой? (что бы переделывать не надо было)


Цитата
Рекомендую использовать FPC с http://FreePascal.org


Тип ansistring
Людмила
Цитата(Ozzя @ 29.04.2010 15:18) *

Тип ansistring


Попробовала сделать так, но ситуация не изменилась при разрядности 2 все нормально, а при большем числе X не хватает длины строки. Может надо как ни будь явно указывать максимальную длину?
volvo
Может быть уже пора представить программу? Ибо говорить можно сколь угодно долго, но это будет пустой треп, пока не видим кода - "Ошибка в 15-ой строке", и ничего кроме этого сказать нельзя.
Ozzя
Людмила, Вам не кажется, что получается гадание на кофейной гуще? Как-то бы поконкретнее вопрос, что-ли?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.