Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.27;
Скачать: CL | DM;

Вниз

Как string перевести в char?   Найти похожие ветки 

 
alexis   (2003-11-12 14:43) [0]

Уважаемые мастера! Мне крайне необходимо узнать можно ли перевести string тип в Char тип.
Задача в упрощенном варианте такова:есть строковая переменная str1,есть символьная переменная ch1.Мне надо получить в ch1 первую букву строки str1.Пытался решить таким образом:
ch1:=copy(str1,1,1);

Не работает по причине несовместимости типов :(
Буду признателен, если подскажете способ решения проблемы.


 
Zacho   (2003-11-12 14:45) [1]

ch1:=str1[1];


 
pasha_golub   (2003-11-12 14:51) [2]

Удалено модератором
Примечание: Offtopic


 
VAleksey   (2003-11-12 15:42) [3]

Удалено модератором
Примечание: Offtopic


 
tipman   (2003-11-12 16:03) [4]

У меня ранее тоже возникал такой вопрос и решил я его так же как показал Zacho , но .....
можно ли закинуть сразу всю строку типа String в массив Char?


 
Jel   (2003-11-12 16:24) [5]


> можно ли закинуть сразу всю строку типа String в массив
> Char?


А строка и есть массив Char.


 
tipman   (2003-11-12 16:39) [6]

var a:String;
b:Array [1..100] of Char;
.....
.....
.....
.....
a := "";
b := "qwertyuiop[]lkjhgfdsazxcvbnm";
a := b;

Получается ошибка?


 
panov   (2003-11-12 16:56) [7]

var
s: String;
b:Array [1..100] of Char
begin
...

Move(s[1],b[0],Length(s));


 
VMcL   (2003-11-12 17:05) [8]

>panov © (12.11.03 16:56) [7]

Move(s[1],b[ 1],Length(s));

или

Move(s[1],b[Low(b)],Length(s));

:)


 
panov   (2003-11-12 17:07) [9]

Точно... Массив-то с единицы определен-)


 
kull   (2003-11-12 17:12) [10]


> panov © (12.11.03 16:56) [7]

Эх...

Move(s[1],b[Low(b)],Min(Length(s),High(b)+1));


 
Pattern   (2003-11-12 17:18) [11]

ch1 := PChar(str1);


 
panov   (2003-11-12 17:26) [12]

КТо больше?


 
Alexis   (2003-11-15 00:25) [13]

Спасибо, Zacho, помогло.Как раз то,что нужно.А строку в массив символов перевести можно так:

var
dlina,i:integer;
stroka:string;
mas_symb:array [1..100] of char;
...
dlina:=length(stroka);
for i:=1 to dlina do mas_symb[i]:=stroka[i];

По-моему наиболее разумное решение.


 
Zacho   (2003-11-15 00:31) [14]


> Alexis © (15.11.03 00:25) [13]

Не, move быстрее и писать меньше :)


 
Johnmen   (2003-11-15 00:50) [15]

>Alexis © (15.11.03 00:25)

А вдруг длина строки более 100 ? :)))))))))))))))

Не спеши делиться своими "познаниями". Лучше освой основы пр-ия...


 
Palladin   (2003-11-15 06:55) [16]


> Alexis © (15.11.03 00:25) [13]

О да... заниматся копированием массивов туда сюда, это очень ответственная задача. Особенно для программиста, которому делать больше нечего. И особенно через for.

Ответь мне на вопрос, что же тебе мешает изначально обращатся к строке как к массиву символов?


 
Anatoly Podgoretsky   (2003-11-15 11:59) [17]

Alexis © (15.11.03 00:25) [13]
Очень не разумное, ни по надежности ни по эффективности. Если второе не важно, то с первым придешь к нам с вопросом - у меня AV, а в программе все правильно.


 
Romkin   (2003-11-15 13:01) [18]

2Anatoly Podgoretsky По всей видимости, в некоторых компаниях любят примерно такой код, вот и получаются уязвимости с переполнением буфера :)
2Alexis строки в Object Pascale очень хорошо сделаны, массивами символов можно и не пользоваться, заодно и вылетов за границы не будет. А твой код в [13] может привести к чему угодно.


 
Anatoly Podgoretsky   (2003-11-15 13:06) [19]

Судя по количеству сообщений, так кроме отроков никто не работает.


 
Anatoly Podgoretsky   (2003-11-15 13:07) [20]

На форуме часто стречал следующее, почему не анализируем ошибки - ответ у меня ошибок не будет :-)


 
LastLamer   (2003-11-16 03:02) [21]

StrPCopy?



Страницы: 1 вся ветка

Текущий архив: 2003.11.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-89769
Chaked
2003-11-07 11:53
2003.11.27
Как убрать пробелы


3-89789
KIR
2003-11-06 17:38
2003.11.27
Народ, требуется ли BDE, если используется DB.pas?


3-89732
Мыш
2003-11-09 18:16
2003.11.27
Выбрать данные из нескольких таблиц. SQL.


7-90141
LexaVV
2003-09-17 10:02
2003.11.27
MAC адрес, BIOS


1-89985
Софейков Костя
2003-11-13 18:00
2003.11.27
Графики через массив...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский