![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Пишу функцию, которая преобразует строку в целочисленный массив и возвращет его. В качестве параметров функция принимает строку и разделитель.Основная проблема-это возвращаемое значение.
1) Создавал отдельный пользовательский тип, создавал массив указанного типа и записывал в него, но возникли сложности с преобразованием строки к пользовательскому типу-Delphi7 не хочет преобразовывать строку к пользовательскому типу. 2) Создавал отдельный пользовательский тип, отдельный массив и и пробовал через переменную-посредника типа Variant запихнуть значения в массив-резуьтат тот же, что и в п.1 Подскажите пожалуйста, как можно решить проблему возвращаемого значения. |
#2
|
|||
|
|||
![]() Код твой давай. Там посмотрим
|
#3
|
||||
|
||||
![]() Чего проще, объяви динамический массив и наращивай его по мере надобности.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
![]() Цитата:
|
#5
|
|||
|
|||
![]() Код:
type int_arr:array of integer; end; function parse_string_to_array(parsing_str,splitter:string):int_arr; var i,counter,str_length:integer; generated_arr:int_arr; temp_str:string; v:variant; begin counter:=1; Setlenght(generated_arr,counter); str_length:=length(parsing_str); for i:=1 to (str_length)+1 do begin if(parsing_str[i]<>splitter) and (parsing_str[i]<>#0) then begin temp_str:=temp_str+parsing_str[i]; end else begin v:=temp_str; generated_arr[counter]:=v; v:=''; inc(counter); SetLenght(generated_arr,counter); end; end; end; |
#6
|
||||
|
||||
![]() Ну и строку до кучи давай.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() 9,6,4,12,5,2,6,5,7,5,3,11,10,5,10,7
|
#8
|
||||
|
||||
![]() Примерно так:
Код:
type int_arr = array of Integer; function TForm2.Parse_string_to_array(parsing_str, splitter : String) : int_arr; var I, Count, str_length : Integer; generated_arr : int_arr; temp_str : String; v : variant; begin SetLength(generated_arr, 0); Result := generated_arr; if parsing_str = '' then Exit; Count := 1; temp_str := ''; SetLength(generated_arr, Count); str_length := Length(parsing_str); for I := 1 to str_length + 1 do begin if (parsing_str[i] <> splitter) and (parsing_str[i] <> #0) then temp_str := temp_str + parsing_str[i] else begin v := temp_str; generated_arr[Count - 1] := v; v := ''; temp_str := ''; inc(Count); SetLength(generated_arr, Count); end; end; Result := generated_arr; end; procedure TForm2.Button3Click(Sender: TObject); var arr : int_arr; begin arr := Parse_string_to_array('9,6,4,12,5,2,6,5,7,5,3,11,10,5,10,7', ','); end; Ааа..., так там у тебя ошибочка была при обращении к массиву, выход за пределы диапазона. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 20.07.2011 в 01:15. |