Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.02 c
14-1083579274
Undert
2004-05-03 14:14
2004.05.23
Services


1-1084345406
Stas
2004-05-12 11:03
2004.05.23
как в MDIChild убрать заголовок


1-1084169747
nejest
2004-05-10 10:15
2004.05.23
конвертор dfm


1-1084000885
TGrey
2004-05-08 11:21
2004.05.23
проблема с TImage


3-1082894259
Николай
2004-04-25 15:57
2004.05.23
Люди, подскажите запрос!




   Наверх