Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Вниз

Array char -> String   Найти похожие ветки 

 
Б   (2009-12-11 09:42) [0]

Здрасти!

Как сделать присваивание Buffer Name? (array char -> string)


Var
 Name: string;
 Buffer: array [0..11] of Char;
begin  



 
Б   (2009-12-11 09:46) [1]

Вопрос закрыт.


 
Сергей М. ©   (2009-12-11 09:46) [2]

Зачем это надо - плодить одни и те же данные, но в разных ипостасях ?

К данным, которые хранит тип string, можно преспокойно обращаться как к массиву символов.


 
Б   (2009-12-11 09:56) [3]


> Зачем это надо - плодить одни и те же данные, но в разных
> ипостасях ?


Да это пример в DRKB такой.
Там функция определяет вендор CPU на Асме, возвращает TVendor = array [0..11] of Char. Ну т.к. Асм я не знаю, (чтобы заменить) то пришлось сделать обёртку под String.


 
Сергей М. ©   (2009-12-11 09:58) [4]

Приведи полный текст этой ф-ции ..


 
Б   (2009-12-11 10:02) [5]

DRKB:



type

TVendor = array[0..11] of char;

.........................

function GetCPUVendor: TVendor; assembler; register;

asm

PUSH EBX {Save affected register}

PUSH EDI

MOV EDI,EAX {@Result (TVendor)}

MOV EAX,0

DW $A20F {CPUID Command}

MOV EAX,EBX

XCHG EBX,ECX {save ECX result}

MOV ECX,4

@1:

STOSB

SHR EAX,8

LOOP @1

MOV EAX,EDX

MOV ECX,4

@2:

STOSB

SHR EAX,8

LOOP @2

MOV EAX,EBX

MOV ECX,4

@3:

STOSB

SHR EAX,8

LOOP @3

POP EDI {Restore registers}

POP EBX

end;



 
Б   (2009-12-11 10:03) [6]

Это я обётки сморганил. ;)



// Определяет производителя CPU.
Function XCPUVendor: string;
Type
 TVendor = array [0..11] of Char;

 Function CPUVendor: TVendor; assembler; register;
 Asm
   PUSH EBX               // Save affected register.
   PUSH EDI
   MOV  EDI,  EAX         // @Result (TVendor).
   MOV  EAX,  0
   DW   $A20F             // CPUID Command.
   MOV  EAX,  EBX
   XCHG EBX,  ECX         // Save ECX result.
   MOV  ECX,  4

   @1:  STOSB
        SHR   EAX, 8
        LOOP  @1
        MOV   EAX, EDX
        MOV   ECX, 4
   @2:  STOSB
        SHR   EAX, 8
        LOOP  @2
        MOV   EAX, EBX
        MOV   ECX, 4
   @3:  STOSB
        SHR   EAX, 8
        LOOP  @3
        POP   EDI         // Restore registers.
        POP   EBX
 End;

begin
 Result:= CPUVendor;
End;


 
Сергей М. ©   (2009-12-11 10:34) [7]

Вот заточенная под String:
function CPUVendor: String;
asm
 MOV  EDX, 12
 CALL System.@LStrSetLength
 PUSH EBX               // Save affected register.
 PUSH EDI
 MOV  EDI, [EAX]         // @Result (String).
 MOV  EAX,  0
 DW   $A20F             // CPUID Command.
 MOV  EAX,  EBX
 XCHG EBX,  ECX         // Save ECX result.
 MOV  ECX,  4
@1:  STOSB
 SHR   EAX, 8
 LOOP  @1
 MOV   EAX, EDX
 MOV   ECX, 4
@2:  STOSB
 SHR   EAX, 8
 LOOP  @2
 MOV   EAX, EBX
 MOV   ECX, 4
@3:  STOSB
 SHR   EAX, 8
 LOOP  @3
 POP   EDI         // Restore registers.
 POP   EBX
end;


 
Б   (2009-12-11 10:37) [8]

Спасибо. ;)


 
Anatoly Podgoretsky ©   (2009-12-11 12:21) [9]

> Б  (11.12.2009 10:03:06)  [6]

Нет нужды в DW, когда можно просто CPUID


 
Б   (2009-12-11 13:16) [10]


> Нет нужды в DW, когда можно просто CPUID


Если честно, то я ничего не понял. ;)
Я Асм не "понимать".


 
clickmaker ©   (2009-12-11 13:19) [11]

это команда x86 совместимых процессоров, для определения самих себя
собственно A20F - это ее код
в совсем уж старых процах ее нет



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

Форум: "Начинающим";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
2-1260712096
serhiyiv
2009-12-13 16:48
2010.02.07
TStringList


15-1259644584
d@nger
2009-12-01 08:16
2010.02.07
проблема с UserGate и сервером


3-1234507272
matveih1
2009-02-13 09:41
2010.02.07
ibconsvc.exe


15-1259839785
Тимоха123
2009-12-03 14:29
2010.02.07
перечисление форм проекта


15-1259865018
andrewtitoff
2009-12-03 21:30
2010.02.07
Кодировка HTTP запросов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский