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

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

Как привести строку или число к типу Char? [D5, Win2k]


Страницы:   1 2

nikolo ©   (2002-08-16 16:40:00) 

Всем привет! У меня есть строка или число > 0 и < 10. Как я могу привести эту строку и число к типу Char?
Помогите, срочно надо!


nikolo   (2002-08-16 18:11:00) [21]

Я же писал, что функция должна быть в dll, а там со стрингами проблемы.


Skier   (2002-08-16 18:08:00) [22]

>nikolo
А зачем тебе вообще этот PChar, только
String нельзя что ли обойтись ?


nikolo   (2002-08-16 18:05:00) [23]

Ребята, а что без выделения памяти не обойтись?
Мне нужно передать в функцию строку, состоящую только из цифр, например "928476234234", которая увеличит все символы на 1 (если 9, то в 0). Обязательно работать только с PChar? Можно ли в функции локально объявить переменную типа String и работать с ней (в dll)?
Я пробовал делать так:

function FFF(PSt: PChar): PChar;
var St: String;
begin
St := StrPas(PSt);
...
Result := PChar(St);
end;


но работает как-то странно - то нормально, а то на выходе ерунда какая-то.
В чем проблема?


Skier   (2002-08-16 17:39:00) [24]

>nikolo
Память не пытался выделять !?


Var
Dest: PChar;
cc: Char;
Begin
Dest := AllocMem(4);
try
cc := "7";
Dest[3] := cc;
finally
FreeMem(Dest, 4);
end; //try
End;


nikolo   (2002-08-16 17:36:00) [25]

Help!!!
Ответьте, почему я не могу написать следующий код:

Var
Dest: PChar;
cc: Char;
Begin
cc := "7";
Dest[3] := cc;
End;


ведь PChar - это массив символов, заканчивающийся #0...


nikolo   (2002-08-16 17:19:00) [26]

В продолжение темы. Первый раз столкнулся с PChar, ну и геморойная же вещь... Не могу понять, почему не работает функция:

Function TfmMain.FFF(StrP: PChar): PChar;
Var
Source, Dest: PChar;
cc: Char;
Begin
Source := StrP;
Dest := StrP;
while Source^ <> #0 do begin
cc := IntToStr(StrToInt(Source^)+1)[1];
Dest^ := cc; - не работает
Dest^ := Source^; - работает
Inc(Dest);
Inc(Source);
end;
Dest^ := #0;
Result := StrP;
End;


Как вообще надо работать с PChar? Мне эту функцию потом нужно положить в dll, так что без PChar не обойтись. Вообще, интересно, в функциях dll можно объяслять локальные переменные типа String или надо извращаться только с PChar?


Skier   (2002-08-16 16:59:00) [27]

>nikolo
Забыл про > 0 и < 10. Мои извинения...


Skier   (2002-08-16 16:54:00) [28]

>nikolo
C := IntToStr(i)[1];
А вообще если это будет скажем число 12, не задумывался ?


MBo   (2002-08-16 16:53:00) [29]

nikolo
cм. первую строку
MBo © (16.08.02 16:45)


nikolo   (2002-08-16 16:51:00) [30]

s я привел для примера, код в общем такой:

var
i: Integer;
C: Char;
begin
i := 6;
C := ? - как сделать, чтобы в C было "6"?
end;


Skier   (2002-08-16 16:48:00) [31]

>nikolo
c := s[1];


nikolo   (2002-08-16 16:47:00) [32]

Поясню:
var
i: Integer;
c: Char;
s: String;
begin
i := 6;
s := IntToStr(i); - это понятно
c := ? - как сделать, чтобы в c было "6"?
end;


MBo   (2002-08-16 16:45:00) [33]

AChar:=Chr(Ord("0")+anumber)
Achar:=AString[1]


Esu   (2002-08-16 16:44:00) [34]

Не очень понял суть вопроса но похоже тебе помогут функции:
IntToStr, StrToInt, Chr, Ord


Skier   (2002-08-16 16:43:00) [35]

>nikolo
StringVar[Index] - это и есть Char;
А ащё есть функции StrToInt и IntToStr.


Страницы:   1 2

Наверх

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