forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Запись строки в масив (http://forum.boolean.name/showthread.php?t=14271)

S_007 20.02.2011 11:29

Запись строки в масив
 
Здравствуйте!
Var s:string;
data: array[1..7] of integer;

s:=’1234567’, как записать эту строку в массив, каждую цифру по отдельности, чтоб в data[1] было 1, в data[2] было 2, в data[3] было 3 и т.д.? Все перерыл не могу найти пример

ViNT 20.02.2011 12:17

Ответ: Запись строки в масив
 
Перевести символ в число можно так
Ord(GetChar(S,i))-48
Где S - исходная строка, i - номер символа.

kizup 20.02.2011 12:18

Ответ: Запись строки в масив
 
А как ты собираешься это сделать если у тебя массив чисел,а переменная строкового типа. Либо развивать парсить строку а потом пользоваться stringToInteger(s:string). Но мне кажется есть более простой способ через цикл
x:=1;
for i:=1 to 7 do
begin
data[i]:=x;
x:=x+1;
end;
Если че то не так поправьте

ViNT 20.02.2011 12:22

Ответ: Запись строки в масив
 
Цитата:

Сообщение от kizup (Сообщение 179720)
А как ты собираешься это сделать если у тебя массив чисел,а переменная строкового типа. Либо развивать парсить строку а потом пользоваться stringToInteger(s:string). Но мне кажется есть более простой способ через цикл
x:=1;
for i:=1 to 7 do
begin
data[i]:=x;
x:=x+1;
end;
Если че то не так поправьте

Жесть:-D
Во первых, зачем заводить еще одну переменную и инкрементить ее, если уже есть счетчик цикла?
Ну и, как я понял, набор цифр может быть любой.

S_007 20.02.2011 13:17

Ответ: Запись строки в масив
 
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.

baton4ik 20.02.2011 13:29

Ответ: Запись строки в масив
 
Строка - массив символов, начинается не с "1", а с нуля.

Замени
Код:

for i:=1 to 4 do
begin
data[i]:=Ord(GetChar(s,i))-48;
end;

на

Код:

for i:=0 to 3 do
begin
data[i+1]:=Ord(GetChar(s,i))-48;
end;


S_007 20.02.2011 14:05

Ответ: Запись строки в масив
 
baton4ik Спасибо! Ты прав, теперь все работает ровно. ViNT, еще раз спасибо!


Часовой пояс GMT +4, время: 23:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot