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

Вниз

Рекорды в Delphi и структуры в C++   Найти похожие ветки 

 
Pattern ©   (2004-04-03 02:42) [0]

В C++ есть возможность описания структуры следующим обазом:struct FileName
{
 word FileNameLength;
 char FileName[FileNameLength];
};
А как подобную запись отобразить в Delphi:type
 FileName = record;
   FileNameLength: word;
   FileName: ???;
 end;
Если её написать так:type
 FileName = record;
   FileNameLength: word;
   FileName: string[FileNameLength];
 end;
то Delphi ругается, что FileNameLength не объявлена как переменная.


 
kaif ©   (2004-04-03 03:00) [1]

А размер этой структуры в C будет зависеть от данных что ли? Как это потом будем юзать? Сначала резервируем неизвестно сколько памяти под структуру, а потом заливаем ее именно тем количеством байт, которое заранее умудрились угадать?
 Я что-то не врубаюсь... Хотя в C всякое может быть...


 
Pattern ©   (2004-04-03 03:44) [2]

Первый парамерт считывает размер занятый FileName. Во вторую переменную заносится уже само имя. Тут то всё понятно. А как это отбразить в Delphi?


 
dmk ©   (2004-04-03 04:03) [3]

type MyFileName = record
  FNameLength: word;
  FName: String;
 end;

var
 FRec: MyFileName;
 Str: String;

begin

 Str := "qwerty.io";
 FRec.FNameLength := Length(Str);

 With FRec do
   begin
     SetLength(FName, FNameLength);
     FName := Str;
   end;

   InfoMessage(Str);
   SetLength(FRec.FName, 0);


 
Pattern ©   (2004-04-03 04:20) [4]

Спасибо dmk! Это именно то что нужно!


 
Юрий Зотов ©   (2004-04-03 07:08) [5]

> Pattern ©   (03.04.04 04:20) [4]

Даже более того - поскольку строки в Delphi имеют автоматически управляемое время жизни и поскольку  длина строки автоматически устанавливается при присваивании ей значения - так вот, в силу этого хранить в записи длину строки не имеет никакого смысла, а тогда пропадает смысл в самой записи и от нее остается только одна строка.


 
S@shka ©   (2004-04-03 13:55) [6]

DELPHI вообщем рулит :)


 
Yozh_Programmer ©   (2004-04-03 16:22) [7]


> struct FileName
> {
>  word FileNameLength;
>  char FileName[FileNameLength];
> };

странно, а твой код на C++ пашет???


> S@shka ©   (03.04.04 13:55) [6]
> DELPHI вообщем рулит :)

ну не знаю, в С++ есть тип string, и в MFC есть CString - вот тебе типы, которын пашут не менее рулезно, ГЫГЫГЫ!!!


 
Verg ©   (2004-04-03 17:35) [8]


> Pattern ©   (03.04.04 02:42)  
> В C++ есть возможность описания структуры следующим обазом:struct
> FileName
> {
>  word FileNameLength;
>  char FileName[FileNameLength];
> };


Нет, нет там такого...


 
silya ©   (2004-04-03 22:02) [9]

2 Сашка
Не только Делфер в нашей жизни рулит %)
но есть ещё языки не хуже а кое где и лучше Делфера


 
Pattern ©   (2004-04-06 02:57) [10]

2Verg -> Очень даже может быть. Я не сильный знаток С++. Но подобное описание я не сам придумал, а "подсмотрел" где-то на страницах инета. Так что получается, за что купил, за то продал...


 
Suntechnic ©   (2004-04-06 04:22) [11]

>Pattern ©
Написав на С
struct FileName
{
word FileNameLength;
char FileName[FileNameLength];
};

получишь два больших матюка от компилятора.  Первый конечно быстро исправишь (имя структуры совпадает с именем поля), а вот второй... В С нельзя объявить статический массив переменной длины. В выражении char FileName[FileNameLength]; FileNameLength- обязана быть константа. Так что ты скорее всего видел что-то типа
struct FileName
{
word FileNameLength;
char FileNameStr[MAX_PATH];
};

Где MAX_PATH это константа описанная где-то в недрах windows.h

Так вот, не удивляйся потом, если как-нибудь передав в сишную dll с прототипом ф-ции принимающей в качестве параметра подобную структуру, значение описанное в Delphi как dmk ©   (03.04.04 04:03) [3], ты на выходе получишь AV.



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

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

Наверх




Память: 0.47 MB
Время: 0.043 c
1-1081253872
infom
2004-04-06 16:17
2004.04.25
Поиск


3-1080557970
Piarte
2004-03-29 14:59
2004.04.25
Backup заданных таблиц


1-1081138205
_sulent
2004-04-05 08:10
2004.04.25
Tray...


14-1080902712
V-Isa
2004-04-02 14:45
2004.04.25
Оцените компонент AnimIcon!


1-1081157259
NorthMan
2004-04-05 13:27
2004.04.25
что-то не получается сделалать enabled:=false для пункта





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