|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Функция преобразования строки в целочисленный массив
Пишу функцию, которая преобразует строку в целочисленный массив и возвращет его. В качестве параметров функция принимает строку и разделитель.Основная проблема-это возвращаемое значение.
1) Создавал отдельный пользовательский тип, создавал массив указанного типа и записывал в него, но возникли сложности с преобразованием строки к пользовательскому типу-Delphi7 не хочет преобразовывать строку к пользовательскому типу. 2) Создавал отдельный пользовательский тип, отдельный массив и и пробовал через переменную-посредника типа Variant запихнуть значения в массив-резуьтат тот же, что и в п.1 Подскажите пожалуйста, как можно решить проблему возвращаемого значения. |
#2
|
|||
|
|||
Код твой давай. Там посмотрим
|
#3
|
||||
|
||||
Чего проще, объяви динамический массив и наращивай его по мере надобности.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
Код:
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; |
#5
|
|||
|
|||
Цитата:
|
#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. |
#9
|
||||
|
||||
Лучше маленько изменить код:
Код:
... SetLength(generated_arr, Count); v := temp_str; generated_arr[Count - 1] := v; v := ''; temp_str := ''; inc(Count); ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
Код:
type TMass = array of integer; function parse(inputString, delimiter: string): TMass; var i: integer; M: TMass; begin SetLength(M, 0); inputString := Trim(inputString) + delimiter; i := Pos(delimiter, inputString); while i <> 0 do begin SetLength(M, Length(M) + 1); M[High(M)] := StrToInt(Trim(Copy(inputString, 1, i - 1))); Delete(inputString, 1, i); i := Pos(delimiter, inputString); end; Result := M; end; |
#11
|
||||
|
||||
Запользуй регэкспы
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#12
|
|||
|
|||
можно ещё memo использовать
PHP код:
|
#13
|
||||
|
||||
Цитата:
З.Ы. Уж больно код твой дикий — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#14
|
||||
|
||||
Цитата:
З.Ы. Уж больно код твой дикий — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#15
|
|||
|
|||
Только только добрался до Интернета.Всем ОГРОМНОЕ СПАСИБО. Заработало!!!!!!!!!!!!!!!!
|