Trang 4 trên tổng số 4 Đầu tiênĐầu tiên ... 234
Từ 31 tới 37 trên tổng số 37 kết quả

Đề tài: ASCII và ...

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

    Mặc định ASCII và ...

    ASCII là kiến thức cơ bản nhất

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

    C# ESC/POS Print Vietnamese

    Visual C# Code:
    1. public static readonly string ESC = "\u001B";
    2. ...
    3. ...
    4. ...
    5. Encoding enc = Encoding.GetEncoding(1258); //vietnamese code page
    6. string content = "Cơm chiên với các loại gia vị truyền thống làm cho lưỡi của bạn";
    7. string toPrint = ESC + "t" + char.ConvertFromUtf32(94) + "\n" + Encoding.GetEncoding("Latin1").GetString(enc.GetBytes(str));  
    8. //code page 94 is for vietnamese (WPC1258). It is get from printe
    9. ...


    https://stackoverflow.com/questions/52715099/c-sharp-esc-pos-print-vietnamese

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

    Thấy trong sách Tin học 11, NXB: GD VN, § Các thành phần của ngôn ngữ lập trình.

    Mỗi NNLT thường có 3 thành phần cơ bản là bảng chữ cái, cú pháp và ngữ nghĩa.

    Thì ra là vậy ! Bảng chữ cái là thành phần cơ bản, đứng đầu.

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

    Quá cơ bản, thành ra khó nói ?

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

    ABC Song


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

    Mặc định ASCII và ...

    Character Types

    On the 32-bit and 64-bit platforms:
    • Char and WideChar are stored as an unsigned word variable, normally using UTF-16 or Unicode encoding.
    • AnsiChar type is stored as an unsigned byte. In Delphi 2007 and earlier, Char was represented as an AnsiChar. The character type used with Short Strings is always AnsiChar and is stored in unsigned byte values.
    • The default long string type (string) is now UnicodeString, which is reference counted like an AnsiString, the former default long string type. Compatibility with older code may require the use of the AnsiString type.
    • WideString is composed of WideChars like UnicodeString, but is not reference counted.


    http://docwiki.embarcadero.com/RADStudio/Rio/en/Internal_Data_Formats_(Delphi)

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

    Mã nguồn gốc, Use Pipes (or receive input and output from a console), https://www.tek-tips.com/faqs.cfm?fid=7402
    Pascal Code:
    1. unit mcunit;
    2.  
    3. { written by Glenn9999 @ tek-tips.com.  Posted here 6/21/2011 }
    4. interface
    5.  
    6. uses
    7.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    8.   StdCtrls;
    9.  
    10. type
    11.   monitor = class(TThread)  // pipe monitoring thread for console output
    12.   private
    13.     TextString: String;
    14.     procedure UpdateCaption;
    15.   protected
    16.     procedure Execute; override;
    17.   end;
    18.   TForm1 = class(TForm)
    19.     CommandText: TMemo;
    20.     CommandRun: TComboBox;
    21.     Button2: TButton;
    22.     SaveDialog1: TSaveDialog;
    23.     procedure FormDestroy(Sender: TObject);
    24.     procedure Button2Click(Sender: TObject);
    25.     procedure FormCreate(Sender: TObject);
    26.   private
    27.     { Private declarations }
    28.   public
    29.     { Public declarations }
    30.     cmdcount: integer;
    31.   end;
    32.  
    33. var
    34.   Form1: TForm1;
    35.   InputPipeRead, InputPipeWrite: THandle;
    36.   OutputPipeRead, OutputPipeWrite: THandle;
    37.   ErrorPipeRead, ErrorPipeWrite: THandle;
    38.   ProcessInfo : TProcessInformation;
    39.   myThread: monitor;
    40.  
    41. implementation
    42.  
    43. {$R *.DFM}
    44.  
    45. procedure WritePipeOut(OutputPipe: THandle; InString: string);
    46. // writes Instring to the pipe handle described by OutputPipe
    47.   var
    48.     byteswritten: DWord;
    49.   begin
    50. // most console programs require CR/LF after their input.
    51.     InString := InString + #13#10;
    52.     WriteFile(OutputPipe, Instring[1], Length(Instring), byteswritten, nil);
    53.   end;
    54.  
    55. function ReadPipeInput(InputPipe: THandle; var BytesRem: Integer): String;
    56.   {
    57.     reads console output from InputPipe.  Returns the input in function
    58.     result.  Returns bytes of remaining information to BytesRem
    59.   }
    60.   var
    61.     TextBuffer: array[1..32767] of char;
    62.     TextString: String;
    63.     BytesRead: Integer;
    64.     PipeSize: Integer;
    65.   begin
    66.     Result := '';
    67.     PipeSize := Sizeof(TextBuffer);
    68.     // check if there is something to read in pipe
    69.     PeekNamedPipe(InputPipe, nil, PipeSize, @BytesRead, @PipeSize, @BytesRem);
    70.     if bytesread > 0 then
    71.       begin
    72.         ReadFile(InputPipe, TextBuffer, pipesize, bytesread, nil);
    73.         // a requirement for Windows OS system components
    74.         OemToChar(@TextBuffer, @TextBuffer);
    75.         TextString := String(TextBuffer);
    76.         SetLength(TextString, BytesRead);
    77.         Result := TextString;
    78.       end;
    79.   end;
    80.  
    81. procedure monitor.Execute;
    82. { monitor thread execution for console output.  This must be threaded.
    83.    checks the error and output pipes for information every 40 ms, pulls the
    84.    data in and updates the memo on the form with the output }
    85. var
    86.   BytesRem: DWord;
    87. begin
    88.   while not Terminated do
    89.     begin
    90.       // read regular output stream and put on screen.
    91.       TextString := ReadPipeInput(OutputPipeRead, BytesRem);
    92.       if TextString <> '' then
    93.          Synchronize(UpdateCaption);
    94.       // now read error stream and put that on screen.
    95.       TextString := ReadPipeInput(ErrorPipeRead, BytesRem);
    96.       if TextString <> '' then
    97.          Synchronize(UpdateCaption);
    98.       sleep(40);
    99.     end;
    100. end;
    101.  
    102. procedure monitor.UpdateCaption;
    103. // synchronize procedure for monitor thread - updates memo on form.
    104. begin
    105.   With Form1.CommandText.Lines do
    106.     Add(TextString);
    107. end;
    108.  
    109. procedure TForm1.FormDestroy(Sender: TObject);
    110. begin
    111.   WritePipeOut(InputPipeWrite, 'EXIT'); // quit the CMD we started
    112.   MyThread.Terminate;
    113.   // close process handles
    114.   CloseHandle(ProcessInfo.hProcess);
    115.   CloseHandle(ProcessInfo.hThread);
    116.   // close pipe handles
    117.   CloseHandle(InputPipeRead);
    118.   CloseHandle(InputPipeWrite);
    119.   CloseHandle(OutputPipeRead);
    120.   CloseHandle(OutputPipeWrite);
    121.   CloseHandle(ErrorPipeRead);
    122.   CloseHandle(ErrorPipeWrite);
    123. end;
    124.  
    125. procedure TForm1.Button2Click(Sender: TObject);
    126.  { takes the input from the command edit box and processes it }
    127.   var
    128.     UpText: String;
    129.   begin
    130.     UpText := UpperCase(CommandRun.Text);  // done to eliminate case-sensitivity
    131.     if UpText = 'CLR' then        // clear the memo
    132.       begin
    133.         CommandText.Clear;
    134.         WritePipeOut(InputPipeWrite, #13);
    135.       end
    136.     else
    137.     if UpText = 'SAVELOG' then    // save the memo box to a file.
    138.       begin
    139.         if SaveDialog1.Execute then
    140.           begin
    141.             CommandText.Lines.SaveToFile(SaveDialog1.FileName);
    142.             CommandText.Lines.Add('Log file saved.');
    143.           end
    144.         else
    145.           CommandText.Lines.Add('Log file not saved.');
    146.       end
    147.   // expand this, it needs to catch any variation where the command-interpreter
    148.   // is called.  Any different ideas?
    149.     else
    150.     if UpText = 'CMD' then
    151.        inc(cmdcount)
    152.     else
    153.     if UpText = 'COMMAND' then
    154.        inc(cmdcount)
    155.   // terminate app if user types exit, else let alone
    156.     else
    157.     if UpText = 'EXIT' then
    158.       begin
    159.         if cmdcount = 1 then
    160.            Application.Terminate
    161.         else
    162.           dec(cmdcount);
    163.       end
    164.     else
    165.       WritePipeOut(InputPipeWrite, CommandRun.Text);
    166.     CommandRun.Items.Add(CommandRun.Text);
    167.     CommandRun.Text := '';
    168.     CommandRun.SetFocus;
    169.   end;
    170.  
    171. procedure TForm1.FormCreate(Sender: TObject);
    172.  { upon form creation, this calls the command-interpreter, sets up the three
    173.    pipes to catch input and output, and starts a thread to monitor and show
    174.    the output of the command-interpreter }
    175.   var
    176.     DosApp: String;
    177.     DosSize: Integer;
    178.     Security : TSecurityAttributes;
    179.     start : TStartUpInfo;
    180.   begin
    181.     CommandText.Clear;
    182.     // get COMSPEC variable, this is the path of the command-interpreter
    183.     SetLength(Dosapp, 255);
    184.     DosSize := GetEnvironmentVariable('COMSPEC', @DosApp[1], 255);
    185.     SetLength(Dosapp, DosSize);
    186.  
    187.   // create pipes
    188.     With Security do
    189.       begin
    190.         nlength := SizeOf(TSecurityAttributes) ;
    191.         binherithandle := true;
    192.         lpsecuritydescriptor := nil;
    193.       end;
    194.     CreatePipe(InputPipeRead, InputPipeWrite, @Security, 0);
    195.     CreatePipe(OutputPipeRead, OutputPipeWrite, @Security, 0);
    196.     CreatePipe(ErrorPipeRead, ErrorPipeWrite, @Security, 0);
    197.  
    198.   // start command-interpreter
    199.     FillChar(Start,Sizeof(Start),#0) ;
    200.     start.cb := SizeOf(start) ;
    201.     start.hStdInput := InputPipeRead;
    202.     start.hStdOutput := OutputPipeWrite;
    203.     start.hStdError :=  ErrorPipeWrite;
    204.     start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    205.     start.wShowWindow := SW_HIDE;
    206.     if CreateProcess(nil, PChar(DosApp), @Security, @Security, true,
    207.                CREATE_NEW_CONSOLE or SYNCHRONIZE,
    208.                nil, nil, start, ProcessInfo) then
    209.       begin
    210.         MyThread := monitor.Create(false);  // start monitor thread
    211.         MyThread.Priority := tpHigher;
    212.       end;
    213.     Button2.Enabled := true;
    214.     cmdcount := 1;
    215.  end;
    216.  
    217.  end.

    Bản dùng AnsiString (D2006)


    Tôi chuyển sang Unicode (WideString), D2010 không thành công: chạy không đúng ( như AnsiString ở trên).

Trang 4 trên tổng số 4 Đầu tiênĐầu tiên ... 234

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