Trang 1 trên tổng số 8 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 80 kết quả

Đề tài: Script and Interpret

  1. #1
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Mặc định Script and Interpret

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Câu lệnh return kq dùng để làm gì ?
    ...
    Thử với CT nKq.cpp sau:
    C Code:
    1. #include <stdio.h>
    2.  
    3. int main() {
    4.     int n;
    5.     printf("Want to get results returned : "); scanf ("%d", &n);
    6.     if(n < 0) return -1;
    7.     // else
    8.     if(n > 0) return 1;
    9.     // else
    10.     return 0;
    11. }
    biên dịch thu được nKq.exe

    Script để kiểm thử - runKq.bat file
    PHP Code:
    @echo off
    nKq
    .exe

    echo.
    echo ================= 
    echo.

    IF %
    ERRORLEVELEQU 0 (
       echo 
    It work OK
    ) else IF %ERRORLEVELEQU 1 (
       echo 
    It has problem, return 
    ) else (
      echo 
    It has problemhave error, return -1
      rem del nKq
    .exe
    )
    rem pause
    echo press a key to exit...
    pause nul 
    để đơn giản bạn đặt (save) batch file cùng thư mục với nKq.exe rồi chạy nó, ex. dbl-click runKq.bat file

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    return ở trên là lệnh trả về kết quả cho HDH, trong hàm main - entryPoint
    tag_code trong cviet có hỗ trợ mức thấp, tôi chụp hình mô tả thực hiện trên máy tính:



    Các lệnh đều thực hiện trực tiếp trong cmd - command line mode, script viết trong notepad++

  3. #3
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Batch script cho topic
    Code tính toán bộ bánh răng vi sai,
    xuất ra file bằng chuyển hướng

    Không xét tham số có hợp lệ hay không! ViSai4.cpp :==> ViSai4.exe
    C Code:
    1. #include <stdio.h>
    2. #include <math.h>
    3. #include <conio.h>   // for getch
    4. #include <stdlib.h>  /* atoi, atof */
    5.  
    6. #define pi 3.14159
    7.  
    8. void XuDung(){
    9.     printf("Using :\n");
    10.     printf("ViSai4.exe Modul Goc Ren\n");
    11.     printf("Ex.\nViSai4.exe 0.8 15 45\n");  
    12. }
    13.  
    14. int  main(int argc, char *argv[]){
    15.     if(argc != 4){
    16.         XuDung();
    17.         return -1;
    18.     }  
    19.  
    20.     float m = atof(argv[1]);
    21.     float b = atof(argv[2]);
    22.     int z = atoi(argv[3]);
    23. /*
    24.     printf("\nNhap Modul = %f", m);
    25.     printf("\nNhap goc nghieng = %f", b);
    26.     printf("\nNhap so rang = %d\n", z);
    27. */
    28.     float i = 120*sin(b*pi/180)/(m*z*pi);  
    29.     printf("ti so vi sai = %f",i);
    30.     //
    31.    
    32.     /*
    33.     printf("\n\n=======================");
    34.     printf("\nPress Ctrl + N to stop, and now ");
    35.     printf("\nPress a key to continue ..."); getch();
    36.     printf("\n=======================\n");
    37.     */
    38.  
    39.     int A, B, N, C;     // Bien tinh banh rang thay the
    40.     for(A = 20; A < 100; A++ ){
    41.         for(B = 20; B < 100; B++ ){
    42.             for(C = 20; C < 100 ; C++){  
    43.                 N = B * C * i/A;
    44.                 printf("\nA=%d, B=%d,   C=%d,   N=%d", A, B, C, N);
    45.             }
    46.         }
    47.     }
    48.    
    49.     /*
    50.     printf("Press a key to quit ...");
    51.     getch();   
    52.     */
    53. }

    batch điều chuyển, pViSai.bat
    C Code:
    1. @echo off
    2. set /p pModul=Modul :
    3. set /p pGoc=Goc :
    4. set /p pRen=Ren :
    5. echo.
    6. rem echo %pModul%
    7. rem echo %pGoc%
    8. rem echo %pRen%
    9. echo.
    10. rem
    11. Call ViSai4.exe %pModul% %pGoc% %pRen%>abc.txt
    12. echo.
    13. echo ==========================
    14. pause

    để đơn giản bạn đặt (save) batch file cùng thư mục với ViSai4.exe rồi chạy nó, ex. dbl-click pViSai.bat file

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Where batch processing remains in use, the outputs of separate stages (and input for the subsequent stage) are typically stored as files. This is often used for ease of development and debugging, as it allows intermediate data to be reused or inspected. For example, to process data using two program step1 and step2, one might get initial data from a file input, and store the ultimate result in a file output. Via batch processing, one can use an intermediate file, intermediate, and run the steps in sequence (Unix syntax):

    step1 < input > intermediate
    step2 < intermediate > output

    This batch processing can be replaced with a flow: the intermediary file can be elided with a pipe, feeding output from one step to the next as it becomes available:

    step1 < input | step2 > output

    Batch processing

  5. #5
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Ở trên tôi đã nói qua nhập xuất, errorLevel
    Nói thêm về trình bày, khi muốn đóng khung, lộng hộp cho đẹp, bảng biểu hay đồ họa trong dos
    Code:
    
    @echo off
    echo.
    echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
    echo  º                            Hiren's BootCD 9.5                              º
    echo  º    For information about this bootcd please visit http://www.hiren.info    º
    echo  º             Please email feedback to: thankihiren(a)hotmail.com            º
    echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
    echo.
    pause
    
    Xem nó trong IDE có hỗ trợ thì hay hơn dạng text


    Tham khảo thêm :
    ASCII và ..

  6. #6
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Mặc định Script and Interpret

    Làm sao xóa (del) một CT khi chạy ?
    Để hoàn thiện nó thì phức tạp hơn; để mở đầu, bắt đầu thì đây là ý tưởng tốt.

    Self deletable application in C# in one executable

    Visual C# Code:
    1. public void uninstall() {
    2.     string app_name = Application.StartupPath + "\\" + Application.ProductName + ".exe";
    3.     string bat_name = app_name + ".bat";
    4.  
    5.     string bat = "@echo off\n"
    6.         + ":loop\n"
    7.         + "del \"" + app_name + "\"\n"
    8.         + "if Exist \"" + app_name + "\" GOTO loop\n"
    9.         + "del %0";
    10.  
    11.     StreamWriter file = new StreamWriter(bat_name);
    12.     file.Write(bat);
    13.     file.Close();
    14.  
    15.     Process bat_call = new Process();
    16.     bat_call.StartInfo.FileName = bat_name;
    17.     bat_call.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    18.     bat_call.StartInfo.UseShellExecute = true;
    19.     bat_call.Start();
    20.  
    21.     Application.Exit();
    22. }

    Nguồn trích dẫn:
    https://stackoverflow.com/questions/1305428/self-deletable-application-in-c-sharp-in-one-executable

  7. #7
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Trong Batch có thể duyệt mảng (array), so sánh, điều khiển if - else, for, có xử lý chuỗi.
    Bat cũng có tham số

    http://www.robvanderwoude.com/parameters.php

  8. #8
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Chuyển thể mã trên sang lập trình API truyền thống, nó chạy tương đối tốt

    C Code:
    1. #include<Windows.h>
    2.  
    3. void Uninstall()
    4. {
    5.     CHAR        szApp[MAX_PATH];        // Sẽ chứa đường dẫn ứng dụng
    6.     CHAR        szBat[MAX_PATH];        // Sẽ chứa đường dẫn tập tin Batch tạm thời
    7.     CHAR        szBuf[MAX_PATH * 4];    // Chứa nội dung tập tin Batch
    8.     HANDLE      hBatFile;               // Thẻ tập tin Batch
    9.     DWORD       dw, dwWrite;
    10.     BOOL        b;
    11.  
    12.     GetModuleFileName(NULL, szApp, MAX_PATH);   // App
    13.     wsprintf(szBat, "%s.bat", szApp);           // Bat
    14.     wsprintf(szBuf, "@echo off\n:loop\ndel \"%s\"\nif Exist \"%s\" GOTO loop\ndel \"%s\"", szApp, szApp, szBat);
    15.  
    16.     hBatFile = CreateFile(szBat, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    17.     if (INVALID_HANDLE_VALUE == hBatFile)
    18.         return;
    19.  
    20.     dwWrite = strlen(szBuf);
    21.     b = WriteFile(hBatFile, szBuf, dwWrite, &dw, NULL);
    22.     CloseHandle(hBatFile);
    23.  
    24.     if (!b || dw != dwWrite)
    25.     {
    26.         DeleteFile(szBat);
    27.         return;
    28.     }
    29.  
    30.     ShellExecute(NULL, "open", szBat, NULL, NULL, 0);
    31.     exit(0);
    32. }
    33. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    34. {
    35.     switch (message)
    36.     {
    37.     case WM_CREATE:
    38.         CreateWindow("button", "Uninstall", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 100, 20, 100, 25, hwnd, (HMENU)40001, ((LPCREATESTRUCT)lparam)->hInstance, NULL);
    39.         return 0;
    40.     case WM_COMMAND:
    41.         if (LOWORD(wparam) == 40001)
    42.         {
    43.             Uninstall();
    44.             MessageBox(hwnd, "false !!!", "", 0);
    45.         }
    46.         break;
    47.     case WM_DESTROY:
    48.         PostQuitMessage(0);
    49.         return 0;
    50.     }
    51.     return DefWindowProc(hwnd, message, wparam, lparam);
    52. }
    53. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
    54. {
    55.     WNDCLASS        w;
    56.     HWND            hwnd;
    57.     MSG             msg;
    58.  
    59.     w.cbClsExtra = 0;
    60.     w.cbWndExtra = 0;
    61.     w.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
    62.     w.hCursor = LoadCursor(NULL, IDC_ARROW);
    63.     w.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    64.     w.hInstance = hInstance;
    65.     w.lpfnWndProc = WndProc;
    66.     w.lpszClassName = "Test Uninstall";
    67.     w.lpszMenuName = NULL;
    68.     w.style = CS_HREDRAW | CS_VREDRAW;
    69.     if (!RegisterClass(&w))
    70.         return 0;
    71.     hwnd = CreateWindow(w.lpszClassName, w.lpszClassName, WS_OVERLAPPEDWINDOW, 200, 100, 300, 100, NULL, NULL, hInstance, NULL);
    72.     if (!hwnd)
    73.         return 0;
    74.     ShowWindow(hwnd, nShow);
    75.     UpdateWindow(hwnd);
    76.     while (GetMessage(&msg, NULL, 0, 0))
    77.     {
    78.         TranslateMessage(&msg);
    79.         DispatchMessage(&msg);
    80.     }
    81.     return msg.wParam;
    82. }

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Uninstall.jpg
Lần xem:	0
Size:		8.8 KB
ID:		59663

  9. #9
    Ngày gia nhập
    08 2017
    Bài viết
    2,779

    Từ CT demo đến chạy thật còn một khoảng cách.

    Điều gì xảy ra khi có 2 thể hiện cùng chạy, ...

    script thường phải test cẩn thận trước khi dùng.
    Tôi thường đặt nó trong resource, trong dll, khi cần theo ngữ cảnh mới lấy ra.

  10. #10
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Vậy mới có từ tương đối, tôi rất rõ chuyện đó nên ở đây chỉ đơn giản kiểm tra hướng làm mà thôi, đã biết hướng làm thì một vài thay đổi theo nhu cầu nào đó thì đương nhiên mã sẽ phải khác đi thôi. Với chương trình trên chỉ cần thêm 2 dòng mã là giải quyết cái điều gì đó mà bạn nêu, bài toán thực tới đâu ta giải quyết tới đó.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn