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