Где Ошибка? Помогите Пожалуйста в Delphi!!!

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Посмотрите пожауйста, где у меня ошибка.
Вообще программка должна из набранной гадости найти буквы и отсортировать их.

begin
S:=Form1.LabeledEdit1.Text;
For i:=1 To Length(S) Do
If (Ord(s)>96) And (Ord(s)<122) Then
Begin
Inc(c);
a[c]:=s;
End;
For i:=1 To Length(a)-1 Do // Начинаем сортировку
For j:=1 To Length(a) Do
If ord(a)>Ord(a[i+1]) Then // Сравниваем текуший и последующий символы
Begin
Buf:=a[i+1];
a[i+1]:=a;
a:=Buf;
End;
For i:=1 To Length(a) Do
Form1.Label1.Caption:=Form1.Label1.Caption+a+' ';
end;

_________________________________________
Кулер тоже вертолет, только маленький.
_________________________________________
Приходит программист домой с работы весь в крови, глаза круглые...
Жена спрашивает:
- Дорогой, что случилось?
Программист, все еще в шоке, отвечает:
- В кулер засосало...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

char - вполне себе перечисляемый тип, можешь писать If (s>'a') And (s<z). Нагляднее получается.
А, как я понял, массив чаров? Он не инициализируется (как и все остальные переменные). Так что возьми просто строку s1, и пиши вместо Begin
Inc(c);
a[c]:=s;
End;
Просто s1=s1+s. Если так хочется использовать массив, да еще и динамический - есть процедура setlength.
В конце тогда form1.label.caption:=s1;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

спасибо, конешно за оперативный ответ но мой комп матюгается на строку
a[c]:=s;

говорит такое:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004540B7 in Module'Project1.exe'. Write of address 0042C0E0. Precess stopped. Use Step or Run to contunue

и просит нажать:
OK Help
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):спасибо, конешно за оперативный ответ но мой комп матюгается на строку
a[c]:=s;

Конечно, ведь А - это стринг, и у него есть длина, уж если надо добавить что-то в строку, то :

Код: Выделить всё

a := a + s[i];
никаких там C не надо
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Всем большое Пасибо!!!
Тема закрыта!
Ответить