users[count_array(users)] := Nick; ShowMessage(users[count_array(users) - 1]); ведь ты же уже изменил массив У меня все работает: PHP: procedure TMainForm.Button4Click(Sender: TObject); var users : array of string; function count_array(array1 : array of string) : integer; var i: Integer; begin for i:=1 to length(array1) do begin if array1[i] = '' then begin Result := i; Break; end; end; end; begin SetLength(users, 10); users[count_array(users)] := 'Ponchik'; ShowMessage(users[count_array(users)- 1]); end; Последння строка выдает сообщение с твоим ником, если убрать - 1 то пустое, что и правильно так как users[2] := '';
если я правильно понял у тебя при попадании на пустой элемент массива result`у присваивается значение.. попробуй в else обнулять result и первый элемент массива 0, а не 1..
да, массив я изменил users: array[1..50] of string; такчто начинается с 1 а не с 0 Да и даже если с 0, я присваиваю [1] а оно его невидет Я тут подумал, может я строкой "array of string" в функции обнуляю массив, но просто array function count_array(array1 : array) : integer; не работает, гвоорит [Error] irc.pas(73): 'OF' expected but ')' found Пойду пасмарю find_in_array работает ваще или нет
Code: function count_array(array1 : array of string; f: string) : integer; var i: Integer; begin for i := 0 to length(array1) - 1 do begin if array1[i] = f then begin Result := i; Break; end else result := 0; end; end; так что ли? Code: var arr: array[0..10] of string; begin arr[0] := 'q'; arr[1] := 'a'; arr[2] := ''; arr[3] := 'd'; showmessage(inttostr(count_array(arr,'a'))); выдает 1..
[stranger], да не, мне подсчитать надо кол-во заполненых элементов в массиве PHP: function test_array(somearray : array of string) : boolean; begin ShowMessage(somearray[1]); Result := True; end; PHP: users[1] := 'fhruthghgfh'; test_array(users); массивы разные ваще получается...
Code: function count_array(array1 : array of string) : integer; var i: Integer; begin Result := 0; for i := 0 to length(array1) - 1 do if array1[i] <> '' then inc(Result); end; выводит количество непустых элементов массива
Ponchik: вот правильней функция, т.к. границы массива не даны сначала PHP: function count_array(array1: array of string): integer; var i: Integer; begin for i := Low(array1) to High(array1) do begin if array1[i] = '' then begin Result := i; ShowMessage(IntToStr(i) + ':' + array1[i]); Break; end; end; end; при том, что максимальное значение i будет являться 49 =\ т.е. когда ты записал array[1]:='1234123123' то в функции это значение будет под индексом 0
Ты передаешь в функцию динамический массив, отсчет в нем идет с нуля !! function test_array(somearray : array of string) : boolean; begin ShowMessage(somearray[0]); Result := True; end; users[1] := 'fhruthghgfh'; test_array(users); Когда я писал, твоего поста не было еще Пончик если работаешь со списками строк то лучше использовать TstringList. В нем сеть и поиск строки, и ассоциатывные спикси можно задавать. Возможностей много в общем.
Какого хера О_о Я ему указываю 1 почему он в 0 записывает ================ Юзаю функцию AlexTheC0d3r PHP: count_array(users); users[1] := 'ras'; count_array(users); users[2] := 'dva'; count_array(users); users[3] := 'tri'; count_array(users); выдаёт месаги 0: 1: 2: 3: Считает, но какое значение там - невидет Если сделать вот... хрень какая-то ========== ыть, туплю... if array1 = '' then... естествено оно значение мне выдавать небудет Рабоооотааееееттт /me ПЛЯСКЕ ПЛЯСКЕ!!! Всем по +5 но я вернусь
Ну в проге с 1 а в функциях с 0 и в проге надо после функции +1 делать, откуда я мог знать что тут такое извращение И ещё... Как узнать делится-ли чисто без остатка или нет? Ну типа % в пыхе Хотя и сам догадываюсь if (Round(i/3) = i/3)
буквально ВСЕМ! да, использовать сложнее, но это окупается стабильностью, скоростью работы и полным контролем работы с сетью..