![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Создал свой модуль MyUnit.
В нем две функции: function FindCharInStr(Str: string; Ch: char):Integer; Function GetStrValue(Str : String; Index : Integer):String; 1) Вызываю функцию FindCharInStr из главного модуля программы: i:= FindCharInStr(Str, ','); После чего i равно 7. Так и должно быть. 2) Вызываю функцию FindCharInStr из функции GetStrValue: i:= FindCharInStr(Str, ','); После чего i равно 0. А должно быть 7! В чем может быть моя ошибка? |
#2
|
|||
|
|||
![]() Покажите текст unit`а.
|
#3
|
|||
|
|||
![]() unit MyForexUnit;
interface function GetStrValue(Str : String; Index : Integer):String; implementation function FindCharInStr(Str: string; Ch: char):Integer; Var i: Integer; Begin For i:=0 to Length(Str)-1 do Begin if Str.Chars[i] = Ch then Begin Result:=i; Exit; End; End; Result:= 0; End; Function GetStrValue(Str : String; Index : Integer):String; Var i: Integer; Begin i:= FindCharInStr(Str, ','); Result:= 'Alex'; End; end. |
#4
|
|||
|
|||
![]() Входной параметр второй фукции у тебя число, а ты записываешь туда строку.
Результат, компилятор должен матерится на несоответствие типо String & Integer Тем более что возвращаемое значение у тя тоже стринг, а ты обявиляешь "i: Integer;" Последний раз редактировалось VIR, 19.12.2007 в 16:07. |
#5
|
|||
|
|||
![]() Спасибо!
![]() ![]() |
#6
|
|||
|
|||
![]() Это у вас для .NET? Меня вот эта конструкция смущает "Str.Chars[i]".
Но я хочу вот что сказать. Начиная с древнего какого-то Паскаля в нем есть такая функция Pos. Она возвращает позицию заданного символа в строке. Это то, что делает ваша первая функция (FindCharInStr), т.е. она не нужна. Что делает вторая - я не понял, поэтому сказать тут ничего не могу. Вообще, советую прежде чем начинать писать своё, посмотреть среди стандартных функций, их очень много написано, тем более для таких элементарных операций. Ну и раз уж я начал советы раздавать ![]() Код:
L := Length(S); for i := 1 to L - 1 do begin ... Строки - они длинные бывают, зачем вам миллион раз вызывать функцию, которая миллион раз возвратит одно и то же значение. |
#7
|
|||
|
|||
![]() Цитата:
Да, это на Borland .Net. А вообще перешел на старый знакомы Delphi 7. Насчет Length Вы правы - 2.5 года не программировал!!! |
#8
|
||||
|
||||
![]() Хм, а чем Pos не подходит?
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |