Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Pchar To String [D7, Win2k]


user101 ©   (2005-01-15 12:36:00) 

Необхотимо из PChar:=#10 Получить строку String:='#10'
Тоесть не значение PChar а два символа # и 10
Ткните пальцем как это сделать :(


user101   (2005-01-15 14:04:00) [1]

Спасибо большое!
Теперь буду знать :)


Separator   (2005-01-15 13:54:00) [2]

Мда, убери еще всякие ненужные s1, p1 и p2


Separator   (2005-01-15 13:52:00) [3]

var
 StringFormatedStream: TStringStream;
 Result, s1: String ;
 P1, P2:Char ;
 I: integer  ;
begin
 StringFormatedStream:= TStringStream.Create('');
 StringFormatedStream.CopyFrom(AData, AData.Size);

 result:= '';
 for i:= 0 to StringFormatedStream.Size - 1 do begin
   if Ord(StringFormatedStream.DataString[i]) < $20
     then Result:= Result + '#' + IntToStr(Ord(StringFormatedStream.DataString[i]))
     else Result:= Result + StringFormatedStream.DataString[i];

 memo1.Lines.Add(result);

StringFormatedStream.Free;

End;


Separator   (2005-01-15 13:42:00) [4]

Если нужна строка '#0ab#10q#7d#9S#14' то учти, что она не поместиться в TempString: array[0..10] of Char, так как имеет длину  в 17 символов, лучше пихай посимвольно: #0 + 'ab' + #10 + 'q' + #7 + 'd' + #9 + 'S + #14, тогда строка будет длиной в 10 символов


user101   (2005-01-15 13:42:00) [5]

ну ладно вот что пишу
Все конечно тупо :) но опыта пока у меня не много :)

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var
StringFormatedStream: TStringStream;
Result,s1: String ;
P1,P2:Char ;
TempString: array[0..1023] of Char ;
I:integer  ;
begin

StringFormatedStream := TStringStream.Create('');
StringFormatedStream.CopyFrom(AData, AData.Size);

for i:=0 to Adata.Size-1 do
begin
TempString[i]:= StringFormatedStream.DataString[i] ;
end;

result:='';
for i:=0 to Adata.Size-1 do
begin
P1 := (TempString[i]);
result:=result+ P1;
end;

memo1.Lines.Add(result);

StringFormatedStream.Free;

End;

в результате получаю в мемо кучу всяких не печатаемых символов
а хотелось бы получить символьное отображение.
не палочки всякие а что то типа #0#34fdsgdf#30 вот


Poirot   (2005-01-15 13:32:00) [6]

Товарисч, давай так. Т ыопределись что у тябя где.. насколько вижу если у тя в стриме то, что ты показал, то как ты в массив её пихаешь?! у тя массив бюольше чем надо...
а во-вторых тебе не судьба тогда просто пройти по всей строке и если например Ord(TempString[i]) < $20 то прибавлять к результирующей строке не сам символ, а просто '#' + IntToStr(Ord(TempString[i])) - вот что-то так, а подробнее, что тебе надо - давай описывать учись, а то не только мне одному это не фига не понятно, как я вижу. Или у примерц весь код кидай. посмотрим.


user101   (2005-01-15 13:27:00) [7]

ну предложите вариант лучше
ситуация такая
есть
Буфер TStream в нем инфа #0ab#10q#7d#9S#14 вот как раз такого типа
всю эту беду я запихиваю TempString: array[0..10] of Char
вот и потом уже выбираю то что мне нужно от туда
а нужна мне вся строка #0ab#10q#7d#9S#14 вот такая


Poirot   (2005-01-15 13:14:00) [8]

LOL однозначный...
Ответь лучше на вопрос - ЗАЧЕМ?!?!
Просто так?! толк?!..
Отладчик показывает символы чере # ибо у них нету нормального символьного представления.. а так сделать можно очень просто...
Только вот я смеялся минут 15)))
низя так дедушку пугать (с)


user101   (2005-01-15 13:13:00) [9]

что один символ с кодом 10 я прекрасно знаю

в том и суть что мне ну нужен этот символ
а все 3 нужны тобищь решетка  единичка и ноль.
вот :(


user101   (2005-01-15 13:11:00) [10]

есть TempString: array[0..10] of Char ;

Смотрю в отладке массив
там такая фигня
TempString=[ #0,'a','b',#10,'q',#7,'d',#9,'s',#14]

в итоге мне нужна строка вся из массива
S:='#0ab#10q#7d#9S#14';


MBo   (2005-01-15 13:07:00) [11]

Хорошо бы книжку почитать по Паскалю.
Там написано, что с помощью #10 обозначается ОДИН символ с кодом 10, да и много другого полезного.
А в теме хелпа Character strings есть полезные примеры.


GanibalLector   (2005-01-15 12:55:00) [12]

> а два символа # и 10
в [0] LOL.


user101   (2005-01-15 12:54:00) [13]

вот надо сделать так

if P1=#10#13 then BEGIN

t1:='всего '+CONVERT(P1);
//Вот нужно не конец строки получить а
t1:='всего #10#13'; тоесть просто строку с символами # 10 13

end;


MBo   (2005-01-15 12:44:00) [14]

пардон, а можно увидеть реальный код присвоения PChar?


Наверх

Титульная страница Поиск, карта сайта Написать письмо