![]() |
|
|
#1
|
|||
|
|||
|
скажите пожалуйста,как ввести одномерный массив в едит.(нет разделителей) Пример: вводим число в едит 1111,и делаем из него массив 1 1 1 1 ?
|
|
#2
|
||||
|
||||
|
Так из массива в Edit или наоборот?
|
|
#3
|
|||
|
|||
|
из Едит в массив
Суть моей задачи такова: Пользователь вводит в едит двоичное число,программа должна его перевести в 10ое и вывести в другой едит. Последний раз редактировалось mixasnt, 07.01.2013 в 00:47. |
|
#4
|
||||
|
||||
|
Примерно так:
Код:
var
buf : array of Byte;
I : Integer;
St : String
...
St := Edit1.Text;
SetLength(Buf, Length(St));
for I := 0 to Length(Edit1.Text) - 1 do
Buf[i] := St[I + 1]; |
|
#5
|
|||
|
|||
|
Цитата:
так не получается (ошибка типов данных) я так ещё пробовал: Код:
var
A:array[1..n] of byte;
i:byte;
S:string[n];
begin
s:=Edit1.Text; //присваеваем перменной
//строк-го типа значение в нах-я Edit1
for I := 1 to n do //цикловым процессом вводим необх-е эл.
A[i]:=StrToInt(S[i]); //в массив Ано тоже глухо( |
|
#6
|
||||
|
||||
|
Забыл преобразование дописать
Код:
Buf[i] := ord(St[I + 1]) - $30; |
|
#7
|
|||
|
|||
![]() Цитата:
|
|
#8
|
||||
|
||||
|
Читать умеешь? У меня как массив объявлен?
Можно сразу напрямую, минуя буфер Код:
function BinToInt(BinStr : string) : Int64;
var
i : Byte;
RetVar : Int64;
begin
BinStr := UpperCase(BinStr);
if BinStr[Length(BinStr)] = 'B' then
Delete(BinStr, Length(BinStr), 1);
RetVar := 0;
for i := 1 to Length(BinStr) do
begin
if not (BinStr[i] in ['0','1']) then
begin
RetVar := 0;
Break;
end;
RetVar := (RetVar shl 1) + (Byte(BinStr[i]) and 1) ;
end;
Result := RetVar;
end;
...
Edit2.Text := IntToStr(BinToInt(Edit1.Text));
...Последний раз редактировалось angvelem, 07.01.2013 в 01:10. |
|
#9
|
|||
|
|||
|
Альтернативное решение задачиможет кому то понадобится)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var base, rez : int64;
i : integer;
begin
base := 1;
rez := 0;
for i := Length(Edit1.Text) downto 1 do
if Not ( Edit1.Text[i] in ['0'..'1'] ) then begin
Application.MessageBox('В edit1 не двоичное число!!',
'Ошибка', MB_ICONSTOP or MB_OK);
Exit
end
else begin
rez := rez + StrToInt(Edit1.Text[i])*Base;
Base := Base * 2;
end;
Edit2.Text := IntToStr( rez )
end; |