![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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?