Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 23:40   #1
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию У кого нибудь есть исходный код функции Copy

Ребята у кого нибудь есть исходный код функции Copy - очень нужно.. заранее спасибо
slips вне форума Ответить с цитированием
Старый 23.04.2009, 23:48   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Реального исходника нет.
Вот, что сам написал. Может, подойдет )
Код:
uses crt;
var
s : string;

function Mycopy(s : string; start : integer; len : integer) : string;
var t : string;
i : integer;
begin
t := '';
i := start;
while (i<start+len) and (i<=length(s)) do
 begin
 t := t + s[i];
 inc(i);
 end;
Mycopy := t;
end;

Begin
clrscr;
readln(s);
writeln(Mycopy(s,5,3));
readkey;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 23:55   #3
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

спасибо..
slips вне форума Ответить с цитированием
Старый 25.04.2009, 13:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а вот исходики и функции. (правда, это из Delphi5, но я не думаю, что разница принципиальная.):
Код:
procedure       _Copy{ s : ShortString; index, count : Integer ) : ShortString};
asm
{     ->EAX     Source string                   }
{       EDX     index                           }
{       ECX     count                           }
{       [ESP+4] Pointer to result string        }

        PUSH    ESI
        PUSH    EDI

        MOV     ESI,EAX
        MOV     EDI,[ESP+8+4]

        XOR     EAX,EAX
        OR      AL,[ESI]
        JZ      @@srcEmpty

{       limit index to satisfy 1 <= index <= Length(src) }

        TEST    EDX,EDX
        JLE     @@smallInx
        CMP     EDX,EAX
        JG      @@bigInx
@@cont1:

{       limit count to satisfy 0 <= count <= Length(src) - index + 1    }

        SUB     EAX,EDX { calculate Length(src) - index + 1     }
        INC     EAX
        TEST    ECX,ECX
        JL      @@smallCount
        CMP     ECX,EAX
        JG      @@bigCount
@@cont2:

        ADD     ESI,EDX

        MOV     [EDI],CL
        INC     EDI
        REP     MOVSB
        JMP     @@exit

@@smallInx:
        MOV     EDX,1
        JMP     @@cont1
@@bigInx:
{       MOV     EDX,EAX
        JMP     @@cont1 }
@@smallCount:
        XOR     ECX,ECX
        JMP     @@cont2
@@bigCount:
        MOV     ECX,EAX
        JMP     @@cont2
@@srcEmpty:
        MOV     [EDI],AL
@@exit:
        POP     EDI
        POP     ESI
    RET 4
end;
___________________________________ _____________________________
добавлено.
а вот из BP7 исходники (там реализация находится в STRH.ASM):
Код:
; Copy standard function
; In    [SP+8] = Destination pointer
;       [SP+4] = Source pointer
;       [SP+2] = Index
;       [SP]   = Length
; Out   SP     = SP+8

SCopy:

        CLD
        MOV     BX,SP
        MOV     DX,DS
        LES     DI,SS:[BX+12]
        LDS     SI,SS:[BX+8]
        MOV     AL,[SI]
        XOR     AH,AH
        MOV     CX,SS:[BX+6]
        OR      CX,CX
        JG      @@1
        MOV     CX,1
@@1:    ADD     SI,CX
        SUB     AX,CX
        JB      @@3
        INC     AX
        MOV     CX,SS:[BX+4]
        OR      CX,CX
        JGE     @@2
        XOR     CX,CX
@@2:    CMP     AX,CX
        JBE     @@4
        MOV     AX,CX
        JMP     SHORT @@4
@@3:    XOR     AX,AX
@@4:    STOSB
        MOV     CX,AX
        REP     MOVSB
        MOV     DS,DX
        RETF    8

Последний раз редактировалось Serge_Bliznykov; 25.04.2009 в 13:52.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как посмотреть исходный код exe'ника bamer Помощь студентам 6 10.11.2008 23:42
покажите исходный код какого-нибудь вируса или трояна в Delphi Aboltus Безопасность, Шифрование 10 03.09.2008 06:56
У кого-нибудь есть исходники для игры Жизнь? Maxpm Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 01.03.2007 13:52
Есть у кого нибудь русский help для Delphi 7.0??? Kren Общие вопросы Delphi 7 12.01.2007 22:06