Главная страница
    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.036 c
3-1080651328
geg
2004-03-30 16:55
2004.04.25
Генерация номера заказа


3-1080199108
Rio
2004-03-25 10:18
2004.04.25
DBLookupComboBox


4-1075871946
Мыш
2004-02-04 08:19
2004.04.25
Клик сквозь окно


1-1081080475
Delphin
2004-04-04 16:07
2004.04.25
Hi ALL! Есть проблема с типизированным файлом: есть такой код:


14-1081193328
Alex Vitik
2004-04-05 23:28
2004.04.25
Моя прога не работает на другом компе... Че делать?





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