Here's an example Delphi code that demonstrates how to create a named pipe server and client using the `CreateNamedPipe` and `ConnectNamedPipe` functions:

```delphi
// Server code
var
  hPipe: THandle;
  lpvMessage: PChar;
  cbBytesRead, cbWritten: DWORD;
begin
  hPipe := CreateNamedPipe('\\.\pipe\MyPipe',
                            PIPE_ACCESS_DUPLEX,
                            PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_WAIT,
                            PIPE_UNLIMITED_INSTANCES,
                            0,
                            0,
                            0,
                            nil);

  if hPipe = INVALID_HANDLE_VALUE then
  begin
    // Error handling
    Exit;
  end;

  if not ConnectNamedPipe(hPipe, nil) then
  begin
    // Error handling
    CloseHandle(hPipe);
    Exit;
  end;

  GetMem(lpvMessage, BUFSIZE);

  while True do
  begin
    if not ReadFile(hPipe, lpvMessage, BUFSIZE, @cbBytesRead, nil) then
    begin
      // Error handling
      Break;
    end;

    // Process the message

    if not WriteFile(hPipe, lpvMessage, cbBytesRead, @cbWritten, nil) then
    begin
      // Error handling
      Break;
    end;
  end;

  FreeMem(lpvMessage, BUFSIZE);
  DisconnectNamedPipe(hPipe);
  CloseHandle(hPipe);
end;

// Client code
var
  hPipe: THandle;
  lpvMessage: PChar;
  cbWritten, cbRead: DWORD;
begin
  hPipe := CreateFile('\\.\pipe\MyPipe',
                      GENERIC_READ or GENERIC_WRITE,
                      0,
                      nil,
                      OPEN_EXISTING,
                      0,
                      nil);

  if hPipe = INVALID_HANDLE_VALUE then
  begin
    // Error handling
    Exit;
  end;

  GetMem(lpvMessage, BUFSIZE);

  // Prepare the message to be sent
  StrPCopy(lpvMessage, 'Hello, world!');

  if not WriteFile(hPipe, lpvMessage, BUFSIZE, @cbWritten, nil) then
  begin
    // Error handling
    FreeMem(lpvMessage, BUFSIZE);
    CloseHandle(hPipe);
    Exit;
  end;

  if not ReadFile(hPipe, lpvMessage, BUFSIZE, @cbRead, nil) then
  begin
    // Error handling
    FreeMem(lpvMessage, BUFSIZE);
    CloseHandle(hPipe);
    Exit;
  end;

  // Process the received message

  FreeMem(lpvMessage, BUFSIZE);
  CloseHandle(hPipe);
end;
```

In this example, the server creates a named pipe with the name `\\.\pipe\MyPipe` using the `CreateNamedPipe` function. The client then connects to this named pipe using the `CreateFile` function. The client then sends a message to the server using the `WriteFile` function, and the server reads this message using the `ReadFile` function. The server then sends a response message back to the client using the `WriteFile` function, and the client reads this message using the `ReadFile` function.
นี่คือตัวอย่างโค้ด Delphi ที่สาธิตวิธีการสร้างเนมไปป์เซิร์ฟเวอร์และไคลเอนต์โดยใช้ฟังก์ชัน `CreateNamedPipe` และ `ConnectNamedPipe`: ```delphi // รหัสเซิร์ฟเวอร์ var hPipe: THandle; lpvMessage: PChar; cbBytesRead, cbเขียน: DWORD; เริ่มต้น hPipe := CreateNamedPipe('\\.\pipe\MyPipe', PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE หรือ PIPE_READMODE_MESSAGE หรือ PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, 0, ไม่มี); ถ้า hPipe = INVALID_HANDLE_VALUE ให้เริ่ม // เกิดข้อผิดพลาดในการจัดการ Exit; จบ; ถ้าไม่ใช่ ConnectNamedPipe(hPipe, nil) ให้เริ่ม // เกิดข้อผิดพลาดในการจัดการ CloseHandle(hPipe); ออก; จบ; GetMem(lpvMessage, BUFSIZE); ในขณะที่ True จะเริ่มต้นถ้าไม่ใช่ ReadFile(hPipe, lpvMessage, BUFSIZE, @cbBytesRead, nil) จากนั้นเริ่มต้น // เกิดข้อผิดพลาดในการจัดการตัวแบ่ง; จบ; // ประมวลผลข้อความหากไม่ใช่ WriteFile (hPipe, lpvMessage, cbBytesRead, @cbWritten, nil) จากนั้นเริ่ม // เกิดข้อผิดพลาดในการจัดการตัวแบ่ง; จบ; จบ; FreeMem(lpvMessage, BUFSIZE); DisconnectNamedPipe(hPipe); CloseHandle(hPipe); จบ; // รหัสลูกค้า var hPipe: THandle; lpvMessage: PChar; cbWritten, cbRead: DWORD; เริ่ม hPipe := CreateFile('\\.\pipe\MyPipe', GENERIC_READ หรือ GENERIC_WRITE, 0, ไม่มี, OPEN_EXISTING, 0, ไม่มี); ถ้า hPipe = INVALID_HANDLE_VALUE ให้เริ่ม // เกิดข้อผิดพลาดในการจัดการ Exit; จบ; GetMem(lpvMessage, BUFSIZE); // เตรียมข้อความที่จะส่ง StrPCopy(lpvMessage, 'Hello, world!'); ถ้าไม่ใช่ WriteFile(hPipe, lpvMessage, BUFSIZE, @cbWritten, nil) ให้เริ่มต้น // เกิดข้อผิดพลาดในการจัดการ FreeMem(lpvMessage, BUFSIZE); CloseHandle(hPipe); ออก; จบ; ถ้าไม่ใช่ ReadFile(hPipe, lpvMessage, BUFSIZE, @cbRead, nil) ให้เริ่มต้น // เกิดข้อผิดพลาดในการจัดการ FreeMem(lpvMessage, BUFSIZE); CloseHandle(hPipe); ออก; จบ; // ประมวลผลข้อความที่ได้รับ FreeMem (lpvMessage, BUFSIZE); CloseHandle(hPipe); จบ; ``` ในตัวอย่างนี้ เซิร์ฟเวอร์สร้างไปป์ที่มีชื่อด้วยชื่อ `\\.\pipe\MyPipe` โดยใช้ฟังก์ชัน `CreateNamedPipe` จากนั้นไคลเอนต์เชื่อมต่อกับไปป์ที่มีชื่อนี้โดยใช้ฟังก์ชัน 'CreateFile' จากนั้นไคลเอ็นต์จะส่งข้อความไปยังเซิร์ฟเวอร์โดยใช้ฟังก์ชัน `WriteFile` และเซิร์ฟเวอร์จะอ่านข้อความนี้โดยใช้ฟังก์ชัน `ReadFile` จากนั้นเซิร์ฟเวอร์จะส่งข้อความตอบกลับไปยังไคลเอ็นต์โดยใช้ฟังก์ชัน `WriteFile` และไคลเอ็นต์จะอ่านข้อความนี้โดยใช้ฟังก์ชัน `ReadFile`
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence