Char конверсия

7 отговора 223 прегледа
#1

Char конверсия

Как да конвертирам Char в String?
Искам да напиша нещо такова:
StrNew := StrNew + Chr(SymbolCode mod 256) + Chr(SymbolCode/256);
където StrNew е String, a SymbolCode e Byte

Отговор
в отговор на mit #2

Re: Char конверсия

Прави се точно така, както си го направил, но грешката ти е друга - не можеш да използваш делене (оператора '/'), а трябва да използваш целочислено делене (оператор div). Правилният израз е:
StrNew := StrNew + Chr(SymbolCode mod 256) + Chr(SymbolCode div 256);
Друг е въпроса, че този израз горе е абсолютно безсмислен. SymbolCode mod 256 винаги ще ти върне SymbolCode, а SymbolCode div 256 - винаги 0. Това е по простата причина, че byte може да е от 0 до 255.
По-добре кажи какво точно искаш да направиш и ще ти кажем как да стане!

Отговор
в отговор на mit #3

Re: Char конверсия

Безсмислието на това е вярно, а за втората част може би искаш да използваш остатъка, който в случая трябва да е Chr(Round(Frac(SymbolCode/256))).

Редактирано от TRN на

Отговор
в отговор на andrew_nikoloff #4

Re: Char конверсия

Това е част от опита ми да "конвертирам" код на VBScript в програма на Delphi.
А проблема е следния: искам да направя програма за Upload на файлове която да поддържа сертификати. Опитах с компонента TIEHTTP, [линк] но неуспешно.

Отговор
в отговор на mit #5

Е нямах точно това предвид...

... като ти предложих да кажеш какво искаш да направиш
В смисъл какво точно искаш да постигнеш с този израз, а не като цяло каква програма пишеш
Така като гледам предполагам, че се опитваш в стринга да натрупаш шеснадесетичното представяне на някакви двоични данни. Прав ли съм?
Ако ще ги четеш байт по байт делителят ти трябва да е 16, а не 256. Ама пак не е съвсем това, което си написал. Ако искаш погледни в хелпа функцията IntToHex. Ако съм прав - това е нещото, което ти трябва.
Успех!

Отговор
в отговор на mit #6

Re: Char конверсия

Разгледай това, може да ти помогне да измислиш нещо.

Отговор
в отговор на TRN #7

Re: Char конверсия

То и това не е съвсем така:
Round(Frac(x)) винаги е 0 или 1 и се получава съответно #0 или #1 в зависимост от това дали SymbolCode е <= 128 или не

Отговор
в отговор на Formal #8

Re: Char конверсия

Да, напълно си прав.
Бях написал нещо много близко до това, което е написал andrew_nikoloff, но за да не се дублираме измислих тая глупост, а като се позамислих вече беше късно.

Отговор