Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Проблемка с asm   Найти похожие ветки 

 
Dll   (2004-05-07 18:30) [0]

Почему в следующем коде переменная Ch заносится в регистр al как 0, хотя сама не нулевая? А есть ли в делфи ее собственные методы работы с битами?

procedure TForm1.Button1Click(Sender: TObject);
var s, d: string[100];
   Ch: byte;
   x: byte;
begin
  s:=Edit1.Text;
  for x:=1 to 20 do
  begin
    for i:=1 to Length(S) do
    begin
      Ch:=byte(s[i]);
      asm
        mov al,Ch
        xor al,x
        mov Ch,al
      end;
      D[i]:=chr(Ch);
    end;
    RichEdit1.Lines.Add(D);
  end;
end;


 
ASMiD ©   (2004-05-07 18:39) [1]

Вообще Ch bkb CH или ch - это все имя регистра, а транслятор внутри Asm твою переменную с таким именем в гробу видел и берет регистр и ничего тебе толком не возвращяет. Так что обзови ее как-нибудь подругому.


 
WebErr ©   (2004-05-07 18:40) [2]

asm
 xor Ch, x
end;


 
WebErr ©   (2004-05-07 18:41) [3]

Вернее, с учётом [1]:

asm
  xor SomeValue, SomeCount
end;


 
ASMiD ©   (2004-05-07 18:42) [4]


> WebErr ©


> asm
>  xor Ch, x
> end;

Я от тебя такого не ожидал!


 
WebErr ©   (2004-05-07 18:49) [5]


> ASMiD ©   (07.05.04 18:42) [4]

Я привык ещё с Сишных времён различать регистры в коде, поэтому анализ кода в языках с встроенным пофигизмом как Pascal и Assembler. ^^


 
div ©   (2004-05-07 18:51) [6]

вообще asm тут и не нужен ))) и Ch тоже... )
кстати где твое i: Integer ? )))

procedure TForm1.Button1Click(Sender: TObject);
var
 s,
 d: string[100];
 x: byte;
 i: Integer;
begin
 s := Edit1.Text;
 for x := 1 to 20 do
 begin
   for i := 1 to Length(S) do
     D[i] := chr(byte(s[i]) xor x);
   RichEdit1.Lines.Add(D);
 end;


 
Dll   (2004-05-07 18:52) [7]

Спасибо, ASMiD. Я и не заметил, что это тоже регистр :) Но появилась другая проблемка - появляется ошибка в строке RichEdit1.Lines.Add(D). С чем это может быть связано?


 
ASMiD ©   (2004-05-07 18:53) [8]

Извини за грубость.
Это я узнал еще в паскале, а сейчас может и нигде не пишут.


 
div ©   (2004-05-07 18:57) [9]

и нафиг string[100]?
s, d: string; -  и фсе)


 
ASMiD ©   (2004-05-07 18:58) [10]

А на него все свойства правильно заданы?


 
Dll   (2004-05-07 19:00) [11]

>и нафиг string[100]?
>s, d: string; -  и фсе)

Если написать s, d: string, то ошибка появляется еще в строке  D[i]:=chr(crr). Но почему?


 
Anatoly Podgoretsky ©   (2004-05-07 19:01) [12]

Обращение к невыделенной памяти D[i]


 
div ©   (2004-05-07 19:02) [13]

разве что сделать еще вот так:

 ...
 s := Edit1.Text;
 SetLength(d, Length(s);
 ...

извиняюсь )


 
Dll   (2004-05-07 19:03) [14]

Все свойсва RichEdit пока по умолчанию.


 
Dll   (2004-05-07 19:09) [15]

Все, спасибо большое. Действительно не хватало SetLength(d, Length(s)). Наверно, я еще сильно ламоват :)


 
ASMiD ©   (2004-05-07 19:21) [16]

Вообще-то это странно.
Я написал то же самое и прошло безо всяких SetLength.
var
s:string[100];
begin
 s:=Edit1.Text;
 RichEdit1.Lines.Add(s);
end;


 
Alex Konshin ©   (2004-05-07 20:42) [17]

Ты еще больше удивишься, но с s: string это тоже сработает.
Все-таки почитай про тип String.



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
8-1078660834
S_FreemAn*[wiZard]
2004-03-07 15:00
2004.05.23
Компонент Delphi


6-1081316049
ashnurov
2004-04-07 09:34
2004.05.23
WinInet


1-1083747219
SoftAl
2004-05-05 12:53
2004.05.23
Управление чужим софтом


3-1082873201
DeaDer
2004-04-25 10:06
2004.05.23
ComboBox со значениями из базы


14-1083737054
Goida
2004-05-05 10:04
2004.05.23
Как пишется рекомендательное письмо?