Главная страница
    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.47 MB
Время: 0.032 c
9-1071243483
KefiR™
2003-12-12 18:38
2004.05.23
Мой движок


14-1083610744
Pensioner
2004-05-03 22:59
2004.05.23
Откройте кладовку!


7-1081922752
Евгыш
2004-04-14 10:05
2004.05.23
AsyncPro, получение блока данных


14-1082550292
WebErr
2004-04-21 16:24
2004.05.23
private vs protected


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский