Страница 1 из 1

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

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

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;

_________________________________________
Кулер тоже вертолет, только маленький.
_________________________________________
Приходит программист домой с работы весь в крови, глаза круглые...
Жена спрашивает:
- Дорогой, что случилось?
Программист, все еще в шоке, отвечает:
- В кулер засосало...

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

Добавлено: 08 дек 2006, 10:41
Хыиуду
char - вполне себе перечисляемый тип, можешь писать If (s>'a') And (s<z). Нагляднее получается.
А, как я понял, массив чаров? Он не инициализируется (как и все остальные переменные). Так что возьми просто строку s1, и пиши вместо Begin
Inc(c);
a[c]:=s;
End;
Просто s1=s1+s. Если так хочется использовать массив, да еще и динамический - есть процедура setlength.
В конце тогда form1.label.caption:=s1;

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

Добавлено: 08 дек 2006, 10:56
Oleg_Rus
спасибо, конешно за оперативный ответ но мой комп матюгается на строку
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

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

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

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

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

a := a + s[i];
никаких там C не надо

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

Добавлено: 09 дек 2006, 05:50
Oleg_Rus
Всем большое Пасибо!!!
Тема закрыта!