Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 21:00   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию String в array of Char и обратно.

Добрый вечер. Знаю тема такая была, но у меня свои вопросы. В общем я написал функцию для перевода массива в строку.
Код:
function TForm1.StrToStrArray(str: String): String;
var
i:integer;
begin
SetLength(str,Length(str)+2);

for  i:=1 to Length(str)+2 do
  begin
  if i<>Length(str)+2 then
    strr[i]:=str[i]
  else
    strr[i]:=#0;
  end;

end;
Хотелось бы узнать тонкости перевода и правильность моего решения. Я хочу это использовать для передачи текста по WinSock. Спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 22.11.2011, 21:08   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Массив чего? Какой массив?
У вас входная строка и выходная тоже строка. Сути не уловил.
Если Array of Char то есть функция StrPas() - Аналог string(Array of Char);
Человек_Борща вне форума Ответить с цитированием
Старый 22.11.2011, 21:25   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
У вас входная строка и выходная тоже строка.
Я не придумал, как на выходе сделать array of char. Согласен - глупость. Насчет готовых функций StrPas и String я задумаюсь. Результат сообщу завтра.
Спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 22.11.2011, 21:50   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Все просто:
Код:
type
  TCharArray = array of Char;
  PCharArray = ^TCharArray;
var
  Form1: TForm1;

implementation

{$R *.dfm}

function StrToCharArray(aStr: string): PCharArray;
var
  tArr: TCharArray;
  i: Integer;
begin
  SetLength(tArr, Length(aStr) + 2); //+2 чтобы строка заканчивалась #0
  for i := 1 to Length(aStr) do
    tArr[i] := aStr[i];
  Result := Addr(tArr); //Вернём указатель на массив. 
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s:String;
  p:PCharArray;
begin
  s:='Privet';
  p:=StrToCharArray(s);
  //Результат = {#0,P,r,i,v,e,t,#0}
end;
Человек_Борща вне форума Ответить с цитированием
Старый 22.11.2011, 22:10   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Всё уже придумано до вас...
Достаточно поискать оболочку винсоков.

Могу предложить свою.
Работает надежно, как в качестве сервера (в трех режимах - синхронный, асинхронный и потоковый), так и в качестве клиента.
Удобно передавать строку, например, моя библиотека общается с основным приложением посредством строк...
Использует всего один модуль. Пример отправки/получения строки (встроено в оболочку):

Код:
function TxTCPSocket.ReceiveStr: ansistring;
var
  sz: Integer;
begin
  sz:=GetRcvdCount;
  if sz=-1 then Exit;
  SetLength(Result,sz);
  ReceiveBuf(Result[1],sz);
end;
function TxTCPSocket.SendStr(buf: ansistring): Boolean;
begin
  Result:=SendBuf(buf[1],Length(buf))=Length(buf);
end;
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
string-char-wchar_t-char-string чето потерял magog7 Общие вопросы C/C++ 0 08.08.2011 20:21
builder string to char array 6AZblJlb C++ Builder 4 05.11.2010 20:10
array of char -> string Valkiria Общие вопросы Delphi 5 04.10.2007 10:40
Преобразовать из string в array of char vitalik007 Общие вопросы Delphi 6 07.09.2007 01:15
как перевести из integer в real(и обратно), и из real в string(и обратно) Ga-sergey Общие вопросы Delphi 2 08.06.2007 21:13