Skip to main content
devdelphi.ru

Back to all posts

Какой эквивалент у char** из c++ в Delphi?

Published on
3 min read
Какой эквивалент у char** из c++ в Delphi? image

char** в C++ представляет указатель на указатель на char. Он может быть использован для представления указателя на массив строк (массив указателей на char), также известного как "массив C-строк". Каждый элемент массива является указателем на строку, а каждая строка представляет собой последовательность символов типа char, заканчивающуюся символом конца строки '\0'.

Пример использования char** для представления массива C-строк:

#include

int main() {     const int MAX_STRINGS = 3;     const int MAX_LENGTH = 20;          char* strings[MAX_STRINGS];          // выделяем память для каждой строки     for (int i = 0; i < MAX_STRINGS; i++) {         strings[i] = new char[MAX_LENGTH];     }          // инициализируем каждую строку     for (int i = 0; i < MAX_STRINGS; i++) {         std::cout << "Введите строку " << i+1 << ": ";         std::cin.getline(strings[i], MAX_LENGTH);     }          // выводим каждую строку     std::cout << "Введенные строки:\n";     for (int i = 0; i < MAX_STRINGS; i++) {         std::cout << strings[i] << "\n";     }          // освобождаем память, выделенную для каждой строки     for (int i = 0; i < MAX_STRINGS; i++) {         delete[] strings[i];     }          return 0; }

В этом примере мы создаем массив strings типа char** и выделяем память для каждой строки с помощью оператора new. Затем мы инициализируем каждую строку, используя функцию getline из стандартной библиотеки C++. В конце мы освобождаем память, выделенную для каждой строки, с помощью оператора delete[].

Какой эквивалент у char** из c++ в Delphi?

В Delphi эквивалентом char** из C++ является PPAnsiChar. PPAnsiChar также является указателем на указатель на AnsiChar, где AnsiChar представляет символ в кодировке ANSI.

PPAnsiChar может использоваться для представления массива строк в кодировке ANSI. Каждый элемент массива является указателем на строку, а каждая строка представляет собой последовательность символов типа AnsiChar, заканчивающуюся символом конца строки #0.

Пример использования PPAnsiChar для представления массива строк в Delphi:

program DelphiExample;

{$APPTYPE CONSOLE}

uses   SysUtils;

const   MAX_STRINGS = 3;   MAX_LENGTH = 20;

var   strings: array of PAnsiChar;   i: Integer;

begin   SetLength(strings, MAX_STRINGS);

  // выделяем память для каждой строки   for i := 0 to MAX_STRINGS-1 do begin     strings[i] := AllocMem(MAX_LENGTH);   end;

  // инициализируем каждую строку   for i := 0 to MAX_STRINGS-1 do begin     Write('Введите строку ', i+1, ': ');     ReadLn(strings[i]);   end;

  // выводим каждую строку   WriteLn('Введенные строки:');   for i := 0 to MAX_STRINGS-1 do begin     WriteLn(strings[i]);   end;

  // освобождаем память, выделенную для каждой строки   for i := 0 to MAX_STRINGS-1 do begin     FreeMem(strings[i]);   end;

end.

В этом примере мы создаем массив strings типа PPAnsiChar и выделяем память для каждой строки с помощью функции AllocMem. Затем мы инициализируем каждую строку, используя функцию ReadLn из стандартной библиотеки Delphi. В конце мы освобождаем память, выделенную для каждой строки, с помощью функции FreeMem.