Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

String и array of char   Найти похожие ветки 

 
starik30   (2003-07-01 11:50) [0]

Hi !
есть
var
str1 : string;
AChar : array [0..9] of char;

Помогите разобраться в 2-х вопросах :
- как строковой переменной(str1) присвоить значение AChar);
- как массиву AChar присвоить значение строковой переменной;

P.S. В цикле сам знаю -)) (а хочеться получит ответ почему нельзя str1:=AChar)

Заранее благодарен
Юра


 
Palladin   (2003-07-01 11:56) [1]

string это и есть array of char,
AChar:array [0..9] of char; равносильно AChar:string[10]; только индексация с 1 начинается...


 
Poirot   (2003-07-01 11:57) [2]

1 - str1 := AChar - это если вы про Делфи....


 
Poirot   (2003-07-01 11:58) [3]


> Palladin ©

вот в этом и проблема? Что типа если пытаться привести к массиву, то получим на 1 байт больше...
Всётаки вопрос - на каком языке пишем (вернее где компиляете)!!!


 
DVM   (2003-07-01 12:06) [4]


> starik30

Может не в тему, но в Delphi в 99% случев можно обойтись без этого наследия языка С - array of char. Есть же string, pchar, есть SetLength, наконец.


 
Palladin   (2003-07-01 12:07) [5]

ну если прикалываться то можно сделать так

type
String10=string[10];

var
str1 : string;
AChar : array [0..9] of char;

str1:=String10(AChar)


 
DVM   (2003-07-01 12:08) [6]


> Palladin © (01.07.03 11:56)
> string это и есть array of char,

Не совсем. По-моему, это скорее про shortstring


 
starik30   (2003-07-01 12:09) [7]

> Palladin
компилятор -Delphi5

Я тоже так думал... Но почему тогда на попытку сделать
str1:=trim(AChar) в окне просмотра получаем результат -
Expression illegal in evaluator, а на обратное присваивание AChar:=str1 - не пропускает компилятор (ошибка- не совместимость типов).

Программа, где используется выражение str1:=trim(AChar) работает с ошибками - раз 20 нормально - потом вылетат с ошибкой и есть подозрение на вышеуказанную строку...

Юра


 
Palladin   (2003-07-01 12:11) [8]

В любом случае s[i] никто никогжда еще не запрещал...


 
Palladin   (2003-07-01 12:14) [9]


> starik30 (01.07.03 12:09)

в принципе меня компилятор не интересовал...

почему именно array [0..9] of char? почему не string[10]?


 
Юрий Федоров   (2003-07-01 12:23) [10]

string[10] - это ShortString, то есть совсем не то же, что array [0..9] of char
С "array [0..9] of char" можно работать как с PChar (выделение \ освобождение памяти выполняется компилятором),
то есть для присвоения массиву строковой переменной нужно вызвать что-то типа
StrLCopy(AChar, PChar(str1), High(AChar));
В обратную сторону - обычное присвоение


 
starik30   (2003-07-01 12:28) [11]

> Palladin

Потому что array of char обьявлен

type
TAllRecord = packed record
..
AChar : array [0..9] of char;
...
end;


AAllRecord : array of TAllRecord;

Все это для того чтобы загнать файл в массив записей а потом работать с массивом. Попытка написать так
{$h-}
type
TAllRecord = packed record
..
AChar : string[10];
...
end;
{$H+}

приводят к увеличению размера записи


 
Palladin   (2003-07-01 12:33) [12]

ну тогда делай как Юрий Федоров © (01.07.03 12:23)
или
var
s:string;

setlength(s,sizeof(achar));
move(a[0],s[1],sizeof(achar));


 
starik30   (2003-07-01 12:33) [13]

> Юрий Федоров

почему тогда в окне просмотра (Ctrl+F7) trim(AChar) получаем результат - Expression illegal in evaluator ? Да и в коде моей проги ничего особо хитрого нет - но через раз 20 программа вылетает с ошибкой ...


 
Юрий Федоров   (2003-07-01 12:40) [14]

>>starik30 (01.07.03 12:33)
Окно просмотра часто "глючит" при включенной оптимизации.
Через 20 раз вылетает - дело в чем-то другом


 
starik30   (2003-07-01 13:09) [15]

>Юрий Федоров

Только что под отладчиком нашел строку в программе, где вылетает ошибка :
str1:="test 1 "+trim(AChar);




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

Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-44596
malamba
2003-06-19 09:39
2003.07.14
Жутчайшая выходка Access


14-44896
Dimich1978
2003-06-27 20:44
2003.07.14
ПОЗДРАВИМ SERGO


9-44533
ghossst
2002-12-29 13:57
2003.07.14
Внимание!Проект 3D-движка


1-44761
shark
2003-07-01 17:08
2003.07.14
числа


1-44719
antoniz
2003-07-01 10:02
2003.07.14
Подскажите, как ограничить поле для ввода (по ширене)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский