Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с массивом [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]

А где мучения?


Наверх

Титульная страница Поиск, карта сайта Написать письмо