|
????????????? ???????? ?? ?????????? ??????
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 8:11 am Заголовок сообщения: ????????? ????????? ? ???????? ?????? ? ?? ??????? |
|
|
???????? ? ???? ???????? ????????????? ????????????????? ??????????? ????? ?????????? MQL4. ???????? ?? ???? ?????? ????? WinAPI.CreateFileA(), ReadFile() ? ????? ? WriteFile() ?? ??????, ?????? CreateFileA() ?????????? ? ?????? FILE_SHARE_READ, ? ? ???????? ?????? ?????????? ????????? ????????? ? ??? ????. ?? ??? ?????????, ? ????????????? ????????? ????????? ? ???????? ?????? ???? ???? ????????? ?????, ???? ?? ??????? ? ????????? ???????? ??????. _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????...
Последний раз редактировалось: KimIV (Пн Июл 09, 2007 8:31 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 8:20 am Заголовок сообщения: |
|
|
???? ????????? ? ???? ??????? ??? ???????????? ??????? ????????????????? ??????????? ?????. ??? ???? ???????????, ??? ? ??????? ??? ???????????????? ???????????? ?????. ??? ???? ? ??????? ????? ???????????, ??? ??????? ????-???????? ? ?????? ??? ?????? ?? ???????????, ?? ???? ???????? ????? ???? ??????? ??????? ??????????? ? ???? ??????. ??? ??? ???? ??????-?????????:
Код: | #import "kernel32.dll"
bool CloseHandle // ???????? ???????
( int hObject ); // ????? ???????
int CreateFileA // ???????? ???????? ???????
( string lpFileName, // ?????? ???? ??????? ? ???????
int dwDesiredAccess, // ??? ??????? ? ???????
int dwShareMode, // ????? ?????? ???????
int lpSecurityAttributes, // ????????? ????????????
int dwCreationDisposition, // ????????? ????????
int dwFlagsAndAttributes, // ????? ??????????
int hTemplateFile ); //
bool ReadFile // ?????? ?????? ?? ?????
( int hFile, // handle of file to read
string lpBuffer, // address of buffer that receives data
int nNumberOfBytesToRead, // number of bytes to read
int& lpNumberOfBytesRead[], // address of number of bytes read
int lpOverlapped ); // address of structure for data
bool WriteFile // ?????? ?????? ? ????
( int hFile, // handle to file to write to
string lpBuffer, // pointer to data to write to file
int nNumberOfBytesToWrite, // number of bytes to write
int& lpNumberOfBytesWritten[], // pointer to number of bytes written
int lpOverlapped ); // pointer to structure needed for overlapped I/O
#import
// ??? ??????? ? ???????
#define GENERIC_READ 0x80000000
#define GENERIC_WRITE 0x40000000
#define GENERIC_EXECUTE 0x20000000
#define GENERIC_ALL 0x10000000
// ????? ?????? ???????
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
// ????????? ????????
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
void start() {
string nf1="C:\Program Files\MetaTrader 4\experts\files\Data.txt";
string nf2="CopyData.txt";
nf2=TerminalPath()+"\experts\files\\"+nf2;
FileCopyNonLocking(nf1, nf2);
}
//+----------------------------------------------------------------------------+
//| ??????????? ????? ??? ??? ?????????? ?? ?????? ?????? |
//| ?????????: |
//| nf1 - ??? ????? ????????? |
//| nf2 - ??? ????? ?????????? |
//+----------------------------------------------------------------------------+
bool FileCopyNonLocking(string nf1, string nf2) {
bool ret=True;
int h1, h2, nBytesRead[1]={1};
string Buffer="_";
h1=CreateFileA(nf1, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 128, NULL);
h2=CreateFileA(nf2, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_ALWAYS, 128, NULL);
if (h1>0 && h2>0) {
while (nBytesRead[0]>0) {
ReadFile(h1, Buffer, 1, nBytesRead, NULL);
WriteFile(h2, Buffer, nBytesRead[0], nBytesRead, NULL);
}
} else ret=False;
CloseHandle(h1);
CloseHandle(h2);
return(ret);
} |
_________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 8:25 am Заголовок сообщения: |
|
|
?? ????????:
- ?????? testFileCopyNonLocking.mq4 (???????? ? ????? ..\experts\scripts\)
- ???? ? ????????? ??????? Data.txt (???????? ? ????? ..\experts\files\) _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 9:48 am Заголовок сообщения: |
|
|
?????? ????????? ?? ????:
?????? ?????? ????????? ? ?????????:
????????? ????????? ???????? 1 ????. ??? ????? ?????? ??????. ???????????????? ? ?????? ??????????.
????? ???? ???????? ???? ??????: ????????? ? ?????? ?????? ?????? ? ????????? ? ?????? ????? ??????.
Код: | h1=CreateFileA(nf1, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 128, NULL);
h2=CreateFileA(nf2, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_ALWAYS, 128, NULL); |
???? ?????? ????? ?????? ?????????????,
?? ???????? ???? ?????? ? ?????? ??????? ?? ?????? ????? ????? ????? Buffer.
Код: | while (nBytesRead[0]>0) {
ReadFile(h1, Buffer, 1, nBytesRead, NULL);
WriteFile(h2, Buffer, nBytesRead[0], nBytesRead, NULL);
} |
? ????? ??????? ??? ????? ???????????.
Код: | CloseHandle(h1);
CloseHandle(h2); |
???? ????????? ?????? testFileCopyNonLocking, ?? ??????????? ??? ?????? ????? ???? CopyData.txt - ?????? ? ?????? ????? ????? Data.txt _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 10:18 am Заголовок сообщения: |
|
|
? ????????????????? ??????? FileCopyNonLocking() ??? ????????????? ????????????? ?????? ?????????. ???????? ?? ???! ?? ????????? ?????? ???????????? ???????? ? ????????????? ?????? ?????? ???????????. ???? while ??????????? ??????? ???, ??????? ???? ?????????? ? ?????-?????????. ????????? ?????????? ?????????????? ???????? ????? ??????????? ??????? ?????? Buffer.
?? ??????? ?????? ? ?????? ????????, ??????????? ????????? ???????? ?????? ??????? FileCopyNonLocking():
Код: | void start() {
int i, t=GetTickCount();
string nf1="C:\Program Files\MetaTrader 4\experts\files\Data.txt";
string nf2="CopyData.txt";
nf2=TerminalPath()+"\experts\files\\"+nf2;
for (i=0; i<1000; i++) FileCopyNonLocking(nf1, nf2);
Print("????? ??????????: ",GetTickCount()-t," ??");
} |
? ?????? ?????? ??????? start() ????????? ???????? ??????? GetTickCount(), ??????? ?????????? ?????????? ???????????, ????????? ? ??????? ?????? ???????.
??????? FileCopyNonLocking() ???????? 1000 ???
Код: | for (i=0; i<1000; i++) FileCopyNonLocking(nf1, nf2); |
? ??????? ????? ??????????
Код: | Print("????? ??????????: ",GetTickCount()-t," ??"); |
????? ?????????? ??????? ??????? testFileCopyNonLocking ???? ????????? ??????????: 10094 ??, 9484 ??, 9469 ??, 9860 ??, 9609 ??. ?????, ????? ?????? ??????????.
? ?????? ?????????? ??????. _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 10:28 am Заголовок сообщения: |
|
|
??????????? ?????? ?????? ? ??? ????:
Код: | string Buffer="_-";
...
ReadFile(h1, Buffer, 2, nBytesRead, NULL); |
????????? ?????? testFileCopyNonLocking ????????? ??? ? ???????? ????????? ??????????: 4828, 4812, 4891, 4734, 4813.
??????????? ?????? ?????? ? ?????? ????:
Код: | string Buffer="_-_-";
...
ReadFile(h1, Buffer, 4, nBytesRead, NULL); |
????? ??????????: 2437, 2500, 2516, 2531, 2438.
????????? ?? ????. ?? ??????? ??? ????????????? ?????? ??????, ?? ??????? ?? ??? ????????????? ???????? ??????????? ?????. _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 10:48 am Заголовок сообщения: |
|
|
????? ? ??? - ??? ????????? ?????????. ?????? ??????? ?? MQL4.
????????? ????????? ???????????? ????? ?????????????????? ???????? ???? ASCII, ??????????? ? ??????? ???????: "Character constant".
????????? ????????? - ??? ?????? ????????, ??????????? ? ???????. ??? ????? ??? string. ???? ?????????? ?????? ? ?????? ??????? ??????? ("), ?? ????? ??? ???? ????????? ?????? ???????? ????? ????? (\). ? ?????? ????? ???? ??????? ????? ??????????? ?????????? ?????????, ????? ???????? ????? ?????? ???????? ????? ????? (\). ????? ????????? ????????? - ?? 0 ?? 255 ????????. ???? ????? ????????? ????????? ??????????? ????????????, ?????? ??????? ?????? ?????????????, ? ?????????? ?????? ??????????????? ??????????????.
????, ???????????? ?????? ??????, ??????? ?? ????? ????????????, ?????????? 255 ???????? ??? 255 ????. ???????????????? ?????? 255-??? ????????? ????? ????????. ? ??? ????????????? ????? ?? ????????. ???? ? ???, ??? ??? ???????? ??????? ReadFile ?????? ? ???????? ?????????, ????? ??? ?????? ????? ?????-?? ??????, ?? ???? ??? ???? ?????? ???? ???????? ??????. ???? ????? ?? ???????, ?? ??-??????, ??????? ???? ????????? ??????? ?????, ? ????? ?? ????? ?????? ????????????, ? ?? ??????, ?????? ?????? ??4. _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
KimIV Admin
Зарегистрирован: 24.01.2006 Сообщения: 958 Откуда: ??????
|
Добавлено: Пн Июл 09, 2007 10:57 am Заголовок сообщения: |
|
|
????? ??? ?????????????? ????????????? ????????? ????????? ??????? ??? ????? ??????????, ?, ??? ??? ????????, ???????? ???????????? ???????:
Код: | string Buffer="";
for (int i=0; i<25; i++) Buffer=Buffer+"1234567890";
...
ReadFile(h1, Buffer, 250, nBytesRead, NULL); |
???????? ?????? testFileCopyNonLocking ? ???????????? ?????????? ????? CopyData.txt:
12345678901234567890... ...1234567890
?? ???? ???? CopyData.txt ???????? ?? ??, ??? ?????????? ? ????? Data.txt, ? ??????? ?????????????? ????????????? ??????.
???? ?????? ??????:
Код: | for (int i=0; i<25; i++) Buffer=Buffer+"1234567890"; |
? ???????????????? ????? ? ??????:
Код: | string Buffer="1234567890...1234567890"; |
(???? "1234567890" ???????? 25 ???, ????? ????? ?????? ????????? ????????? Buffer ????????? 250 ????????), ?? ??? ????? ??.
?????????? ?????? ????????? ??????.
????????? ?????????, ???????????? ? ???????? ?????? ? ???????? WinAPI, ?????? ???????????????? ?????????? ?????????? ????????.
??????????, ? ????? ??????? ?? ?????????? ????????????? ????????? ????????, ??????? ???? ?????? ?? ?????? ????????. ? ???? ????????? ????????? ?? ?????????? ????????, ?? ??? ??? ????????? ?????? ?? ?????? ???????. ?? ????, ??? ??????????, ?????????????? ??????. ???? ????????? ?????????? ???????????? ?? ?????????? ?????????? ??????. ? ????? ????????? (? ????? ????? ?? ????, ?????? ???????????) ?????? ???? ? ????? ????????? ??????.
????? ????????? ??? ????? ??????? ????????????? ????????? ?????????:
Код: | string Buffer="12345678901234567890"; |
????????, ?:
Код: | string Buffer="1234567890"+"1234567890"; |
?? ????????.
???????? ??, ????? ??? ???????? ? ??? ?? ?????... _________________ ??? ????? ? ???? ??????? ????? ? ??????? ???????? ???, ? ??????? ? ???? ?????? ? ??????? ???????? ????... |
|
Вернуться к началу |
|
|
?????????
Зарегистрирован: 17.12.2011 Сообщения: 10 Откуда: ????????
|
Добавлено: Ср Апр 04, 2012 10:59 pm Заголовок сообщения: |
|
|
????? ?????? ????.
?? ???? ??? ????? ???????, ? ?????, ??? ? ??????? ?????????? kernel32.dll ????? ?????????? ??? ?????????? ????? ? ?????? ????... ????????? !!! ??? ????????? ???? ??????... ???? ??? ????, ?? ???????? ?? ??????, ?????????? ?????? ???????? (???????? ?????????? ????? ???/??? ?????????? ????), ??, ??? ?? ???????? ????? ?????? ? ? ???? "????????", ??? ????? ??????????? ???????????? ???? ???? ? ??? ???? ??????????? ????????? ?????? ????? ?????? ? ???????? ?? ? ???? "????????" ?
??? ??? ??????.. (? ????????? ??????????? ? ??? ?? ?? ??????? ?????)...
bool ReadFile....
int& lpNumberOfBytesRead[], // address of number of bytes read
int lpOverlapped ); // address of structure for data
?? ???????? ?? ????? ?? ?? ??? ?????????? ??????? ????? ?
????, ?????????? ???????? ????????? ?? ?????? ? ????? ?? ??????? ?... ?????? ???? ? ?????? ????? ????? ??.. ?
???? ???.. ?? ???? ??? ??????????? ?????? ?????????? ?????? ?? ????? ????????? ????????????? ???????, ?? ????? ????, ? ?????????? kernel32.dll ???? ?????? ???????, ??????? ????????? ?????????????? ??? ?? ?? ??????? ????????? ????? ? |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы не можете просматривать вложения в этом форуме
|
Powered by phpBB © 2001, 2005 phpBB Group
|