Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1998
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.01.12 21:59. Заголовок: Как вызвать "Копирование файлов" в xHarboure ?
При длительных операциях иногда "полезнее" для пользователя (и для программы) показывать вместо бегунка - стандартное окно: Т.е. если делаешь операции типа копирование из одной базы в другую. Без вывода на экран такая операция намного быстрей проходит. А чтоб юзер не скучал - хочу такое окно повесить. Как перевести пример Филатова \MiniGUI\SAMPLES\Advanced\AVI_Animation под хХарбор ?
| |
|
Ответов - 37
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 23
Зарегистрирован: 16.12.08
|
|
Отправлено: 11.01.12 22:38. Заголовок: Под xHarbour работае..
Под xHarbour работает без проблем.
| |
|
|
| |
Пост N: 2252
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.01.12 22:46. Заголовок: Andrey пишет: Как п..
Andrey пишет: цитата: | Как перевести пример Филатова \MiniGUI\SAMPLES\Advanced\AVI_Animation под хХарбор ? |
| santy пишет: цитата: | Под xHarbour работает без проблем. |
| Однако
| |
|
|
| постоянный участник
|
Пост N: 1999
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.12 19:09. Заголовок: santy пишет: Под xH..
santy пишет: цитата: | Под xHarbour работает без проблем. |
| Покажи пожалуйста как ? Может я непонятно написал вверху, т.е. нужно перевести пример под консоль xHarbour. Типа как вызывается окно "выбора файла". Пример тут. Скрытый текст FUNCTION MAIN() LOCAL cFile := CurDrive()+":"+DirName() cFile := GetFile( {{ "All Files (*.*)", "*.*" }} , "Browse for File", cFile ) ? cFile wait RETURN NIL *-----------------------------------------------------------------------------* Function GetFile( aFilter, title, cIniFolder, multiselect, nochangecurdir ) *-----------------------------------------------------------------------------* local c := '' , n local files , fileslist := {} Default aFilter TO {} Default multiselect TO .f. FOR n := 1 TO Len( aFilter ) c += aFilter[n][1] + Chr(0) + aFilter[n][2] + Chr(0) NEXT files := C_GetFile ( c , title, cIniFolder, multiselect, nochangecurdir ) if multiselect if Len( files ) > 0 if Valtype( files ) == "A" FOR n := 1 TO Len( files ) if At( "\\", files[n] ) > 0 .and. Left( files[n], 2 ) != "\\" files[n] := StrTran( files[n] , "\\", "\" ) endif NEXT fileslist := aClone( files ) else aAdd( fileslist, files ) endif endif else fileslist := files endif Return ( fileslist ) ///////////////////////////////////////////////////////////////// #pragma BEGINDUMP // из минигуи #include <windows.h> #include <hbapi.h> #include <shlobj.h> #include <commctrl.h> #include <setupapi.h> #ifdef __XHARBOUR__ #define HB_PARNL( n, x ) hb_parnl( n, x ) #define HB_STORC( n, x, y ) hb_storc( n, x, y ) #define HB_STORL( n, x, y ) hb_storl( n, x, y ) #define HB_STORNI( n, x, y ) hb_storni( n, x, y ) #define HB_STORNL( n, x, y ) hb_stornl( n, x, y ) #else #define HB_PARNL( n, x ) hb_parvnl( n, x ) #define HB_STORC( n, x, y ) hb_storvc( n, x, y ) #define HB_STORL( n, x, y ) hb_storvl( n, x, y ) #define HB_STORNI( n, x, y ) hb_storvni( n, x, y ) #define HB_STORNL( n, x, y ) hb_storvnl( n, x, y ) #endif HB_FUNC( C_GETFILE ) { OPENFILENAME ofn; char buffer[ 32768 ]; char cFullName[ 64 ][ 1024 ]; char cCurDir[ 512 ]; char cFileName[ 512 ]; int iPosition = 0; int iNumSelected = 0; int n; int flags = OFN_FILEMUSTEXIST; buffer[ 0 ] = 0; if( hb_parl(4) ) flags = flags | OFN_ALLOWMULTISELECT | OFN_EXPLORER; if( hb_parl(5) ) flags = flags | OFN_NOCHANGEDIR; memset( ( void * ) &ofn, 0, sizeof( OPENFILENAME ) ); ofn.lStructSize = sizeof( ofn ); ofn.hwndOwner = GetActiveWindow(); ofn.lpstrFilter = hb_parc( 1 ); ofn.nFilterIndex = 1; ofn.lpstrFile = buffer; ofn.nMaxFile = sizeof( buffer ); ofn.lpstrInitialDir = hb_parc( 3 ); ofn.lpstrTitle = hb_parc( 2 ); ofn.nMaxFileTitle = 512; ofn.Flags = flags; if( GetOpenFileName(&ofn) ) { if( ofn.nFileExtension != 0 ) hb_retc( ofn.lpstrFile ); else { wsprintf( cCurDir, "%s", &buffer[ iPosition ] ); iPosition = iPosition + strlen( cCurDir ) + 1; do { iNumSelected++; wsprintf( cFileName, "%s", &buffer[ iPosition ] ); iPosition = iPosition + strlen( cFileName ) + 1; wsprintf( cFullName[ iNumSelected ], "%s\\%s", cCurDir, cFileName ); } while( ( strlen(cFileName) != 0 ) && ( iNumSelected <= 63 ) ); if( iNumSelected > 1 ) { hb_reta( iNumSelected - 1 ); for( n = 1; n < iNumSelected; n++ ) HB_STORC( cFullName[ n ], -1, n ); } else hb_retc( &buffer[ 0 ] ); } } else hb_retc( "" ); } // JK JP #pragma ENDDUMP
|
| |
|
|
| постоянный участник
|
Пост N: 668
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.01.12 19:16. Заголовок: Андрюха, напиши свою..
Андрюха, напиши свою функцию рисования прогрессбара. Там делов на 10 минут с тремя перекурами.
| |
|
|
| постоянный участник
|
Пост N: 2000
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.12 20:29. Заголовок: PSP пишет: напиши с..
PSP пишет: цитата: | напиши свою функцию рисования прогрессбара. Там делов на 10 минут с тремя перекурами. |
| Как ? Никак не могу сообразить .... Я копирую 6 баз (по 350 тыс.записей) из одной структуры в другую.... Прогресс бар пусть будет рисоваться по количеству баз. А так "листочки" из папки в папку летают - красиво и как у всех... Красота для пользователя.... И меня не достают - почему медленно.. И программа (терминалка) как настоящая WINDOWS ...
| |
|
|
| постоянный участник
|
Пост N: 669
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.01.12 20:52. Заголовок: Andrey пишет: А так..
Andrey пишет: цитата: | А так "листочки" из папки в папку летают - красиво и как у всех... Красота для пользователя... |
| Листочки, конечно, красиво, но не информативно. Гораздо информативней вывести затраченное/оставшееся время (кол-во записей) и считать не по количеству баз, а по суммарному количеству записей.
| |
|
|
| постоянный участник
|
Пост N: 2001
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.01.12 21:41. Заголовок: PSP пишет: и считат..
PSP пишет: цитата: | и считать не по количеству баз, а по суммарному количеству записей. |
| Это долго будет... И в добавок по скорости удобней пользоваться APPEND FROM (cInputBase), без вывода прогрессбара... Вот для этого и "листочки" нужны.... На глаз видно, когда из большой базы копируешь записи в другую.
| |
|
|
| постоянный участник
|
Пост N: 671
Зарегистрирован: 27.01.07
|
|
Отправлено: 13.01.12 10:26. Заголовок: Andrey пишет: И в д..
Andrey пишет: цитата: | И в добавок по скорости удобней пользоваться APPEND FROM (cInputBase), без вывода прогрессбара... Вот для этого и "листочки" нужны.... |
| Что-то я плохо себе представляю, как ты собрался WinAPI-шный диалог прогресса копирования прикрутить к команде APPEND FROM...
| |
|
|
| постоянный участник
|
Пост N: 2002
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.12 11:07. Заголовок: PSP пишет: Что-то я..
PSP пишет: цитата: | Что-то я плохо себе представляю, как ты собрался WinAPI-шный диалог прогресса копирования прикрутить к команде APPEND FROM... |
| // запуск "листочков" WinAPICopyFILEopen( ' идет копирование баз ') For nI :=1 to LEN(aBase) WinAPICopyFILE( ' идет копирование базы '+STR(nI)) // туда просто сообщение передавать для информации // тут открытие баз .... APPEND FROM (cBaseInput) // - стандартная функция NEXT // убрать "листочки" WinAPICopyFILEclose()
| |
|
|
| постоянный участник
|
Пост N: 672
Зарегистрирован: 27.01.07
|
|
Отправлено: 13.01.12 11:18. Заголовок: Andrey пишет: WinAP..
Andrey пишет: цитата: | WinAPICopyFILEopen WinAPICopyFILE WinAPICopyFILEclose |
| Это реальные функции или ты просто так написал? Функция WinAPI, которая выводит этот диалог при копировании, называется SHFileOperation. В Висте заменена на IFileOperation.
| |
|
|
| постоянный участник
|
Пост N: 673
Зарегистрирован: 27.01.07
|
|
Отправлено: 13.01.12 12:09. Заголовок: Если хочешь, посмотр..
Если хочешь, посмотри вот такой простой пример: PROCEDURE Main( ... ) LOCAL n RDDSETDEFAULT( "DBFCDX" ) CLS USE Base n := BASE->( LastRec() ) COPY STRUCTURE TO Tmp USE Tmp APPEND FROM Base WHILE Show( n ) WAIT RETURN NIL FUNCTION Show( n ) LOCAL nRecNo := TMP->( RecNo() ) + 1 // единица добавляется потому, //что функция вызывается ДО копирования записи IF nRecNo % 1000 == 0 .or. nRecNo == n // каждую 1000-ую запись и последнюю ?? Str( nRecNo ) + Chr( 13 ) END // IF RETURN .T. В функции Show() можно считать оставшееся время. Пользователь будет знать, сколько еще ждать.
| |
|
|
|
| постоянный участник
|
Пост N: 2003
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.12 13:54. Заголовок: PSP пишет: Это реал..
PSP пишет: цитата: | Это реальные функции или ты просто так написал? |
| Это я просто для примера... А как они называются в WinApi я не знаю, и как их вызвать я тоже не представляю.
| |
|
|
| постоянный участник
|
Пост N: 2004
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.12 13:55. Заголовок: PSP пишет: посмотри..
PSP пишет: цитата: | посмотри вот такой простой пример: |
| Пример хороший. Как к нему "листочки" приделать ?
| |
|
|
| постоянный участник
|
Пост N: 674
Зарегистрирован: 27.01.07
|
|
Отправлено: 13.01.12 14:00. Заголовок: Andrey пишет: Как к..
Andrey пишет: цитата: | Как к нему "листочки" приделать ? |
| Никак, Андрюха, никак... Я предложил тебе вариант "без листочков". Для "с листочками" см.функцию WinAPI SHFileOperation. Но тогда будет без APPEND FROM.
| |
|
|
| |
Пост N: 51
Зарегистрирован: 18.02.11
|
|
Отправлено: 14.01.12 22:16. Заголовок: Андрей, посмотри так..
| |
|
|
| постоянный участник
|
Пост N: 2005
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.12 07:35. Заголовок: Прикольный вариант. ..
Прикольный вариант. Только ужасно не нравиться вызов внешних файлов. Я стараюсь обходиться без дополнительных EXE-ников. Тем более нашел вот это: внимание, файл htmlayout dll скачать не предназначен для коммерческого пользования. используя его вы можете нарушать авторские права владельца ...... Так что такой вариант отпадает !
| |
|
|
| постоянный участник
|
Пост N: 1068
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.12 11:20. Заголовок: PSP пишет: Никак, А..
PSP пишет: цитата: | Никак, Андрюха, никак... Я предложил тебе вариант "без листочков". |
| Листочки давай !
| |
|
|
| |
Пост N: 52
Зарегистрирован: 18.02.11
|
|
Отправлено: 15.01.12 14:04. Заголовок: Для Andrey 1.По пово..
Для Andrey 1.По поводу лицензии HTMLayout: Скрытый текст You may utilize HTMLayout Component Software Product free of charge in any manner you see fit (subject to the limitations outlined in this license) to build commercial or non-commercial applications and components. Your application shall include link to Terra Informatica site in "About" dialog or similar place in your application. Text of the link: This Application (or Component) uses HTMLayout Component, copyright Terra Informatica Software, Inc. (http://terrainformatica.com).
| 2.Вместо er32.exe есть c++ текст для посылки сообщений. Могу выложить. 3.Применение одельного exe для таких длителиных операций (как в данном случае) вполне применимо. 4.Можно поискать другие анимационные gif (с листочками).
| |
|
|
| постоянный участник
|
Пост N: 2006
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.12 15:22. Заголовок: Петр пишет: Листочк..
Петр пишет: Да там же в папке \MiniGUI\SAMPLES\Advanced\AVI_Animation\161.avi
| |
|
|
| постоянный участник
|
Пост N: 2007
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.12 15:24. Заголовок: SergejKis пишет: Вм..
SergejKis пишет: цитата: | Вместо er32.exe есть c++ текст для посылки сообщений. Могу выложить. |
| Да я не Си-ник, перевести на Харбор не смогу.
| |
|
|
| |
Пост N: 2255
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.01.12 15:40. Заголовок: Andrey пишет: Да я ..
Andrey пишет: цитата: | Да я не Си-ник, перевести на Харбор не смогу |
| А раздел C++ у нас для чего (надеюсь не только для обсуждения стандартов) ?
| |
|
|
|
| постоянный участник
|
Пост N: 1070
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.12 16:37. Заголовок: Andrey пишет: Да та..
Andrey пишет: цитата: | Да там же в папке \MiniGUI\SAMPLES\Advanced\AVI_Animation\161.avi |
| Я не это имел ввиду Пример от Григория и SHFileOperation немного разные. Не вдаваясь в подробности, SHFileOperation для визуализации использует шаблон диалога. Найти его можно в той же dll, гле и находится вышеупомянутая функция shellapi.dll (там же и "листочки" ). Вытащить этот шаблон можно с помощью какого-то редактора ресурсов, тюнера или хакера, которых в достаточном количестве можно найти на просторах и-нета. 1020 DIALOGEX 20, 20, 240, 105, 0 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_FIXEDSYS | WS_POPUPWINDOW | WS_DLGFRAME FONT 8, "MS Shell Dlg" { CONTROL "", 106, "SysAnimate32", 0x5000000E, 10, 0, 240, 25, WS_EX_TRANSPARENT CONTROL "", 103, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 46, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT CONTROL "", 102, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 35, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT CONTROL "", 104, "msctls_progress32", 0, 10, 65, 220, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "", 105, 78, 85, 100, 10, NOT WS_GROUP | SS_NOPREFIX DEFPUSHBUTTON "Отмена", 500, 180, 83, 50, 14, NOT WS_TABSTOP LTEXT "Название:", 12289, 11, 35, 38, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "Куда:", 12289, 11, 46, 30, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "Расчет времени:", 12289, 11, 85, 62, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT } Вот если бы вы использовали Harbour, то для выполнения этого диалога смогли бы использовать функцию wapi_DialogBoxParam (из библиотеки hbwin). В папке harbour\contrib\hbwin\tests\ можно найти пример вызова диалога dlg.prg Вот как этот пример выглядит в работе
| |
|
|
| постоянный участник
|
Пост N: 1071
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.12 16:41. Заголовок: А вот так выглядит д..
А вот так выглядит диалог с "листочками"
| |
|
|
| постоянный участник
|
Пост N: 1072
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.12 16:46. Заголовок: Код примера #include..
Модифицированный код примера #include "common.ch" #include "hbwin.ch" #include "dlg1.ch" PROCEDURE Main() wapi_DialogBoxParam( 0, IDD_DIALOG1, 0, @DialogFunc() ) RETURN FUNCTION DialogFunc( hWnd, message, wParam, lParam, wPHigh, wPLow ) HB_SYMBOL_UNUSED( wParam ) HB_SYMBOL_UNUSED( lParam ) HB_SYMBOL_UNUSED( wPHigh ) SWITCH message CASE WM_INITDIALOG wapi_SetDlgItemText( hWnd, IDC_STATIC1, "?" ) wapi_SetDlgItemText( hWnd, IDC_STATIC2, "!" ) wapi_SetDlgItemText( hWnd, IDC_STATIC3, Time() ) wapi_SetDlgItemAvi( wapi_GetDlgItem( hWnd, IDC_ANIMATE1 ), 0, IDR_AVI1 ) wapi_SetDlgItemPBRange( wapi_GetDlgItem( hWnd, IDC_PBAR1 ), 0, 100 ) wapi_SetDlgItemPBPos( wapi_GetDlgItem( hWnd, IDC_PBAR1 ), 50 ) RETURN .T. CASE WM_CLOSE IF wapi_MessageBox( 0, "?!", "!!", WIN_MB_OKCANCEL + WIN_MB_ICONQUESTION ) == 1 wapi_SetDlgItemAvi( wapi_GetDlgItem( hWnd, IDC_ANIMATE1 ), 0, 0 ) wapi_EndDialog( hWnd, 3 ) RETURN .T. ENDIF EXIT CASE WM_COMMAND SWITCH wPLow CASE IDC_BUTTON1 SELF_CLOSE( hWnd ) RETURN .T. ENDSWITCH ENDSWITCH RETURN .F. #pragma BEGINDUMP #include "hbwin.h" #include "hbwapi.h" #include "hbapiitm.h" #include <commctrl.h> #if defined( __BORLANDC__ ) && !defined( HB_ARCH_64BIT ) #undef MAKELONG #define MAKELONG(a,b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | \ (((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))) #endif HB_FUNC( WAPI_SETDLGITEMAVI ) { int iResult = SendMessage( hbwapi_par_raw_HWND( 1 ), ACM_OPEN, ( WPARAM ) hbwapi_par_raw_HINSTANCE( 2 ), ( LPARAM ) hbwapi_par_INT( 3 ) ); hbwapi_SetLastError( GetLastError() ); hbwapi_ret_NI( iResult ); } HB_FUNC( WAPI_SETDLGITEMPBRANGE ) { SendMessage( hbwapi_par_raw_HWND( 1 ), PBM_SETRANGE, 0, MAKELONG( hbwapi_par_INT( 2 ), hbwapi_par_INT( 3 ) ) ); } HB_FUNC( WAPI_SETDLGITEMPBPOS ) { SendMessage( hbwapi_par_raw_HWND( 1 ), PBM_SETPOS, ( WPARAM ) hbwapi_par_INT( 2 ), 0 ); } HB_FUNC_STATIC( SELF_CLOSE ) { SendMessage( hbwapi_par_raw_HWND( 1 ), WM_CLOSE, 0, 0 ); } #pragma ENDDUMP
| |
|
|
| постоянный участник
|
Пост N: 1073
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.12 16:53. Заголовок: Файл ресурсов dlg.rc..
Файл ресурсов dlg.rc #include <windows.h> #include <commctrl.h> LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 1 MANIFEST "dlg.xml" 1020 DIALOGEX 20, 20, 240, 105, 0 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_FIXEDSYS | WS_POPUPWINDOW | WS_DLGFRAME FONT 8, "MS Shell Dlg" { CONTROL "", 106, "SysAnimate32", 0x5000000E, 10, 0, 240, 25, WS_EX_TRANSPARENT CONTROL "", 103, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 46, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT CONTROL "", 102, "STATIC", NOT WS_GROUP | SS_BLACKRECT | SS_GRAYFRAME | SS_NOPREFIX, 55, 35, 175, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT CONTROL "", 104, "msctls_progress32", 0, 10, 65, 220, 10, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "", 105, 78, 85, 100, 10, NOT WS_GROUP | SS_NOPREFIX DEFPUSHBUTTON "Отмена", 500, 180, 83, 50, 14, NOT WS_TABSTOP LTEXT "Название:", 12289, 11, 35, 38, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "Куда:", 12289, 11, 46, 30, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT LTEXT "Расчет времени:", 12289, 11, 85, 62, 8, 0, WS_EX_TOPMOST | WS_EX_TRANSPARENT } 2020 AVI "161.avi" Файл манифеста dlg.xml (чтобы приложение поддерживало темы Windows) <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MyApp" version="1.0.0.0" processorArchitecture="X86" /> <description>Verbal description of MyApp.</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> Ну и dlg1.ch #define IDD_DIALOG1 1020 #define IDC_STATIC1 102 #define IDC_STATIC2 103 #define IDC_PBAR1 104 #define IDC_STATIC3 105 #define IDC_ANIMATE1 106 #define IDC_BUTTON1 500 #define IDR_AVI1 2020 #define WM_INITDIALOG 0x0110 #define WM_COMMAND 0x0111 #define WM_SYSCOMMAND 0x0112 #define WM_CLOSE 0x0010
| |
|
|
| постоянный участник
|
Пост N: 2008
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.12 17:56. Заголовок: Петр пишет: Вот ес..
Петр пишет: цитата: | Вот если бы вы использовали Harbour |
| А на хХарбор нельзя перетащить ? Очень просим, все работающие на хХарборе тоже захотят ..... Пытался собрать сам, да не получается. хХарбор не понимает команды ENDSWITCH xHarbour Compiler build 1.0.0 (SimpLex) Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/ Compiling 'CopyFileWinApi.PRG'... CopyFileWinApi.PRG(44) Error E0020 Incomplete statement or unbalanced delimiters CopyFileWinApi.PRG(45) Error E0020 Incomplete statement or unbalanced delimiters CopyFileWinApi.PRG(89) Error E0030 Syntax error: "syntax error at 'я'" 3 errors Проект для хХарбора здесь http://zalil.ru/32502422 Может что-то неправильно сделал ?.....
| |
|
|
| постоянный участник
|
Пост N: 675
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.01.12 10:03. Заголовок: Andrey пишет: хХарб..
Andrey пишет: цитата: | хХарбор не понимает команды ENDSWITCH |
| А END понимает?
| |
|
|
| постоянный участник
|
Пост N: 1074
Зарегистрирован: 09.10.06
|
|
Отправлено: 16.01.12 11:06. Заголовок: PSP пишет: А END по..
PSP пишет: END он понимает, а вот Андрей не понимает, что он хочет.
| |
|
|
| постоянный участник
|
Пост N: 2009
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.12 18:06. Заголовок: PSP пишет: А END п..
PSP пишет: А я знаю что-ли ??? Я не пользуюсь такой конструкцией, без надобности.... Петр пишет: цитата: | END он понимает, а вот Андрей не понимает, что он хочет. |
| Ну понимаю что прошу невыполнимое, но надеюсь, а вдруг можно сделать....
| |
|
|
| |
Пост N: 2256
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.01.12 18:16. Заголовок: Andrey пишет: А я ..
Andrey пишет: цитата: | А я знаю что-ли ??? Я не пользуюсь такой конструкцией, без надобности.... |
| :\svn\xharbour\doc\en\switch.txt
| |
|
|
| постоянный участник
|
Пост N: 2020
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.12 20:29. Заголовок: Опять возвращаюсь к ..
Опять возвращаюсь к проекту, что Петр выложил. Я на Харборе программ еще не делал, так что опять наткнулся на грабли, как обойти - не знаю. Собрал файл проекта CopyFile.hbp для HBMK2 При компиляции выдает ошибку: Z:\hb30\SHFileOperation>Z:\hb30\bin\hbmk2.exe CopyFile hbmk2: Compiling Harbour sources... Harbour 3.0.0 (Rev. 16951) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'CopyFileWinApi.prg'... Lines 965, Functions/Procedures 2 Generating C source output to 'OBJ\CopyFileWinApi.c'... Done. hbmk2: Compiling resources... Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. hbmk2: Compiling... OBJ\CopyFileWinApi.c: Error E2293 CopyFileWinApi.prg 60: ) expected Error E2206 CopyFileWinApi.prg 76: Illegal character '\' (0x5c) *** 2 errors in Compile *** hbmk2: Error: Running C/C++ compiler. 1 bcc32.exe -c -q -d -6 -O2 -OS -Ov -Oi -Oc -tWM -w -Q -w-sig- -nOBJ -IZ:\BCC55\Include -IZ:\hb30\include OBJ\CopyFileWinApi.c Сами исходники здесь: http://zalil.ru/32543676
| |
|
|
|
| постоянный участник
|
Пост N: 709
Зарегистрирован: 27.01.07
|
|
Отправлено: 20.01.12 20:57. Заголовок: Andrey пишет: Error..
Andrey пишет: цитата: | Error E2293 CopyFileWinApi.prg 60: ) expected Error E2206 CopyFileWinApi.prg 76: Illegal character '\' (0x5c) |
| Ну, а что в файле CopyFileWinApi.prg в строках 60 и 76? ЗЫ. Ну да, ну да... Вроде все красиво. BCC что-ли неправильно препроцессерствует...
| |
|
|
| постоянный участник
|
Пост N: 2021
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.12 21:21. Заголовок: PSP пишет: ЗЫ. Ну д..
PSP пишет: цитата: | ЗЫ. Ну да, ну да... Вроде все красиво. BCC что-ли неправильно препроцессерствует... |
| Вот и я не пойму, что там ему не понравилось ?
| |
|
|
| постоянный участник
|
Пост N: 710
Зарегистрирован: 27.01.07
|
|
Отправлено: 20.01.12 21:32. Заголовок: Andrey пишет: Вот и..
Andrey пишет: цитата: | Вот и я не пойму, что там ему не понравилось ? |
| Кажись, я понял. После копирования текста из форума, во всех строках в конце добавлен пробел. Получается, что в #define в 60-й строке символ \ остается после обработки препроцессором, а его в результирующей строке быть не должно. Он означает "продолжение на следующей строке", должен быть последним в строке. Убери замыкающий пробел в 60-й строке.
| |
|
|
| постоянный участник
|
Пост N: 2022
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.12 00:32. Заголовок: PSP пишет: Убери за..
PSP пишет: цитата: | Убери замыкающий пробел в 60-й строке. |
| Не помогло .... Убрал \ и подтянул всю строку, тогда заработало... Но не собралась программа .... Error: Unresolved external '_HB_FUN_WAPI_DIALOGBOXPARAM' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ Error: Unresolved external '_HB_FUN_WAPI_SETDLGITEMTEXT' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ Error: Unresolved external '_HB_FUN_WAPI_GETDLGITEM' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ Error: Unresolved external '_HB_FUN_WAPI_MESSAGEBOX' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ Error: Unresolved external '_HB_FUN_WAPI_ENDDIALOG' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ Error: Unresolved external '_hbwapi_SetLastError' referenced from Z:\HB30\SHFILEOPERATION\OBJ\COPYFILEWINAPI.OBJ hbmk2: Error: Running linker. 2 Видать какую-то библиотеку нужно добавлять....
| |
|
|
| постоянный участник
|
Пост N: 2023
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.12 00:42. Заголовок: Нашел методом тыка, ..
Нашел методом тыка, где сидит WAPI_DIALOGBOXPARAM - в hbwin.lib Добавил в проект -lhbwin.lib Ура, заработало Кому интересно вот готовый проект - http://zalil.ru/32545255 PSP спасибо за подсказку !!! Петр, БОЛЬШОЕ СПАСИБО !!!
| |
|
|
| постоянный участник
|
Пост N: 2024
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.01.12 13:33. Заголовок: А как бегунок застав..
А как бегунок заставить "бежать" в этом примере ? И надписи меняться - выдавать имя копируемой базы ? Уж больно синтаксис навороченный в этом примере ! Да и правильно хочется понять, как такие конструкции использовать. Заранее спасибо за разъяснения.
| |
|
Ответов - 37
, стр:
1
2
All
[только новые]
|
|
|