![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с массивом [D7, WinXP]
shrek © (2004-09-27 20:01:00)Мастера! я уже замучился с этим бороться... :)) вот кусок кода:
A: array[1..10] of string;
....
массив набивается при создании формы!
....
function tform1.CharEx(k: integer; str1: string): string;
var i: integer;
begin
result:= '';
for i:= 1 to k do
begin
Result:= Result + str1[i];
end;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i, Len1: integer;
begin
Len1:= Length(edit1.Text)+1;
for i:= 1 to length(a) do
begin
showmessage(inttostr(len1) + #13 + a[i] + #13 + edit1.Text);
{усли убрать это showmessage то нифига ничего не работает - КАК БЫТЬ???}
if edit1.Text = CharEx(len1, a[i]) then
begin
listbox1.Items.Add(a[i]);
end;
end;
end;
shrek (2004-09-27 21:09:00) [1]все ok - заработало
Defunct (2004-09-27 21:02:00) [2]> да будет вам известно, что begin...end ни на что не влияют!!!
Ждем begin...end'a, щас он появится и покажет, влияет он на что-то или нет ;)
GanibalLector (2004-09-27 20:52:00) [3]
procedure TForm1.FormCreate(Sender: TObject);
begin
A[1]:='123';
A[2]:='456';
A[3]:='789';
A[4]:='sfd';
A[5]:='sfd';
A[6]:='sfd';
A[7]:='sfd';
A[8]:='sfd';
A[9]:='sfd';
A[10]:='sfd';
end;
function CharEx(k: integer; str1: string): string;
var i: integer;
begin
result:= '';
for i:= 1 to k do
Result:= Result + str1[i];
end;
procedure TForm1.Edit1Change(Sender: TObject);
var i:integer;
begin
if Length(Edit1.Text)=0 then Exit;
for i:= 1 to length(a) do
if edit1.Text = CharEx(length(Edit1.text), a[i]) then listbox1.Items.Add(a[i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear;
end;
shrek (2004-09-27 20:47:00) [4]ну слушайте:
есть функция CharEx, ее назначение - отделение k символов из строки str1. Например CharEx(3, 'ANDREW') = 'AND'.
В следующей процедуре производится поиск элементов в массиве.
Если Текст из edit1 = CharEx(...) то добавить этот элемент в листбокс. и вот если перед циклом в процедуре поставить showmessage('') - то все работает - если его убрать - нет!
жду предложений.
GanibalLector (2004-09-27 20:43:00) [5]Это нам известно.Просто твой код хрен прочтешь,да и сути как не было,так и нет.Рассказывай,что надо.
shrek (2004-09-27 20:39:00) [6]да будет вам известно, что begin...end ни на что не влияют!!!
GanibalLector (2004-09-27 20:34:00) [7]Я вообще-то не понял,что надо.Ты лучше обьясни суть,а код свой убери вообще.так проще будет.
Кстати :
function CharEx(k: integer; str1: string): string;
var i: integer;
begin
result:= '';
for i:= 1 to k do
Result:= Result + str1[i];
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i: integer;
begin
for i:= 1 to length(a) do
if edit1.Text = CharEx(length(Edit1.text), a[i]) then listbox1.Items.Add(a[i]);
end;
shrek (2004-09-27 20:23:00) [8]
> А где мучения?
showmessage(inttostr(len1) + #13 + a[i] + #13 + edit1.Text);
{усли убрать это showmessage то нифига ничего не работает - КАК БЫТЬ???}
> for i:= 1 to length(a) do
> дык а у тебя ж array
> следовало бы в первую очередь
> for i:= 1 to length(a[...]) do
Проверял - если ставишь 10 - все равно такая хрень
Vit@ly (2004-09-27 20:19:00) [9]или я чего-то не донца посмотрел?
Vit@ly (2004-09-27 20:17:00) [10]
for i:= 1 to length(a) do
дык ау тебя ж array
следовало бы в первую очередь
for i:= 1 to length(a[...]) do
Anatoly Podgoretsky (2004-09-27 20:13:00) [11]А где мучения?