![]() |
Запись строки в масив
Здравствуйте!
Var s:string; data: array[1..7] of integer; s:=’1234567’, как записать эту строку в массив, каждую цифру по отдельности, чтоб в data[1] было 1, в data[2] было 2, в data[3] было 3 и т.д.? Все перерыл не могу найти пример |
Ответ: Запись строки в масив
Перевести символ в число можно так
Ord(GetChar(S,i))-48 Где S - исходная строка, i - номер символа. |
Ответ: Запись строки в масив
А как ты собираешься это сделать если у тебя массив чисел,а переменная строкового типа. Либо развивать парсить строку а потом пользоваться stringToInteger(s:string). Но мне кажется есть более простой способ через цикл
x:=1; for i:=1 to 7 do begin data[i]:=x; x:=x+1; end; Если че то не так поправьте |
Ответ: Запись строки в масив
Цитата:
Во первых, зачем заводить еще одну переменную и инкрементить ее, если уже есть счетчик цикла? Ну и, как я понял, набор цифр может быть любой. |
Ответ: Запись строки в масив
ViNT благодарю!!! Подскажи еще, не пойму, где в моем коде косяк, если в строке s:=' 1234' перед цифрами не поставить пробел, или любой другой символ, пишет 234-48, где делась единица? А с пробелом 1234
Program Test; Var s:string; data: array[1..7] of integer; i:integer; Begin s:=' 1234'; for i:=1 to 4 do begin data[i]:=Ord(GetChar(s,i))-48; end; DrawText(''+data[1]+data[2]+data[3]+data[4],0,0); repaint; Delay(5000); End. |
Ответ: Запись строки в масив
Строка - массив символов, начинается не с "1", а с нуля.
Замени Код:
for i:=1 to 4 do Код:
for i:=0 to 3 do |
Ответ: Запись строки в масив
baton4ik Спасибо! Ты прав, теперь все работает ровно. ViNT, еще раз спасибо!
|
Часовой пояс GMT +4, время: 23:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot