Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

В ЧЕМ ОШИБКА???   Найти похожие ветки 

 
zzz0001   (2007-09-09 13:56) [0]

function getmail(st:string) : string;

var
numst : integer;
numbegin : integer;
numend : integer;
getmails : string;
getmailsn : integer;

begin

if Pos("@",st) > 0 then
begin

numst := Pos("@",st);

while st[numst] <> " " do
begin
dec(numst);
end;

numbegin := numst;

numst := Pos("@",st);

while st[numst] <> " " do
begin
inc(numst);
end;

numend := numst;
getmailsn := 0;

for numst := numbegin to numend do
begin
showmessage(inttostr(numst));
getmails[getmailsn] := st[numst];
inc(getmailsn);
end;

getmail := getmails;

end;

****
Вылетает на getmails[getmailsn] := st[numst];


 
Palladin ©   (2007-09-09 14:03) [1]

куда вылетает? в астрал?

границы массива/списка или чего у тебя там проверь


 
zzz0001   (2007-09-09 14:06) [2]

на ошибку оут оф ранж
хотя первый символ на 18 позиции последний на 31
куда там вылетать не ясно


 
Anatoly Podgoretsky ©   (2007-09-09 14:14) [3]

> zzz0001  (09.09.2007 13:56:00)  [0]

Еще один партизан сегодня.
И просто удивительно если подобный код будет работать.
Не единой проверки на допустимость.


 
zzz0001   (2007-09-09 17:06) [4]

я же сказал - превышения нету
почему ошибку дает?


 
Palladin ©   (2007-09-09 17:07) [5]

ну как нету если пишет


 
ProgRAMmer Dimonych ©   (2007-09-09 17:28) [6]

Так, я не поленился на этот раз вникнуть в чужой код.

Начну с того, что судя по всему эта функция предназначена для выполнения каких-то действий с адресами электронной почты...

Недостающий end в конце я добавил...

> function getmail(st:string) : string;
> var
>  numst : integer;
>  numbegin : integer;
>  numend : integer;
>  getmails : string;
>  getmailsn : integer;

Здесь всё понятно: По E-Mail"у генерируем серийный номер. :)

Возьмём, скажем, str=" aaa@bbb.ccc "...

> begin
>  if Pos("@",st) > 0 then
>  begin
>   numst := Pos("@",st);

>   while st[numst] <> " " do
>   begin
>    dec(numst);
>   end;

Интересный способ убрать лишние пробелы в начале строки...

>   numbegin := numst;

NumBegin теперь указывает на последний пробел перед "@".

>   numst := Pos("@",st);
>   while st[numst] <> " " do
>   begin
>    inc(numst);
>   end;
>   numend := numst;

Не менее интересный способ удаления пробелов из конца строки. NumEnd указывает на первый пробел в адресе электронной почты.

>   getmailsn := 0;
>   for numst := numbegin to numend do
>   begin
>    showmessage(inttostr(numst));
>    getmails[getmailsn] := st[numst];
>    inc(getmailsn);
>   end;

Хм, а GetMails:=Copy(St,NumBegin,NumEnd-NumBegin+1) не катит? И, кстати, GetMails ранее нигде не используется и не инициализируется, так что в лучшем случае - обращение к символу номер 0, который... Чего-то у меня всю жизнь нумерация с 1 начинается...

>   getmail := getmails;
>  end;
> end;

Теперь если убрать пробелы в начале и конце входной строки - работа алгоритма становится непредсказуемой. Инициализация переменных - придумана не мной и не мной должна быть реализована.

Устраняем ошибки, думаем, а я ещё загляну и, если возникнут вопросы, помогу.


 
DrPass ©   (2007-09-09 17:34) [7]


> ProgRAMmer Dimonych ©   (09.09.07 17:28) [6]
> Так, я не поленился на этот раз вникнуть в чужой код.

Смотри, Ктулху уже подбирается к твоему моску



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.061 c
15-1187848276
AZIZE
2007-08-23 09:51
2007.10.07
И снова о кино


15-1188941829
Германн
2007-09-05 01:37
2007.10.07
Скорость анимации. Глупый, но интересный для меня вопрос.


2-1189493120
JetuS
2007-09-11 10:45
2007.10.07
Как изменить ресурсные строки в EXE-файле?


2-1189472253
Glivera
2007-09-11 04:57
2007.10.07
экземпляр формы


15-1189424595
MZ
2007-09-10 15:43
2007.10.07
Управление пользователями FireBird





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский