Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2008, 01:23   #21
Мессир
Пользователь
 
Аватар для Мессир
 
Регистрация: 24.01.2008
Сообщений: 12
По умолчанию

BOBAH13, спасибо, конечно, вот только я ещё не совсем врубился как записывать данные, а не указатели) ведь, как я понял из Ваших постов, в любом случае будут записаны указатели? Или вариант с Pointer(...) подходит?
Плохо, когда не знаешь, да ещё и забудешь.
Мессир вне форума Ответить с цитированием
Старый 25.01.2008, 01:25   #22
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Мессир, длина строки, которую вы хотите получить, с помощью sizeof не определяется, для этого есть куча функций, вроде strlen.
B_N вне форума Ответить с цитированием
Старый 25.01.2008, 01:27   #23
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
type
  TRec = packed record
    Val1: Integer;
    Val2: WideString;
  end;

...

procedure ...Write...
var
  Str: T...Stream;
  Rec: TRec;
begin
  ...
  Rec.Val1 := 1;
  Rec.Val2 := '2';
  Str.Write(Rec.Val1, SizeOf(Rec.Val1));
  Str.Write(Pointer(Rec.Val2)^, Length(Rec.Val2) * SizeOf(WCHAR));
  ...
end;
Должно быть так
BOBAH13 вне форума Ответить с цитированием
Старый 25.01.2008, 01:29   #24
Мессир
Пользователь
 
Аватар для Мессир
 
Регистрация: 24.01.2008
Сообщений: 12
По умолчанию

Это-то понятно) А разве нельзя сразу записать Rec, а не по отдельности каждое поле записи?


Так скажем, для большего удобства
Плохо, когда не знаешь, да ещё и забудешь.
Мессир вне форума Ответить с цитированием
Старый 25.01.2008, 01:30   #25
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Может танцы с бубном помогут, я так делаю... Если горит пробуйте
Или делайте свой "движок" для хранения всей структуры по выделенному куску в памяти, тогда сможеть сразу просто весь кусок писать и читать откуда хотите.
BOBAH13 вне форума Ответить с цитированием
Старый 25.01.2008, 01:33   #26
Мессир
Пользователь
 
Аватар для Мессир
 
Регистрация: 24.01.2008
Сообщений: 12
По умолчанию

BOBAH13, ладно, благодарю за помощь, завтра опробую, если чего - напишу сюда в качестве вывода Просто хотел отойти от того варианта, который Вы указали выше, не нравится он мне) Хотя перепробовал много... Спасибо
Плохо, когда не знаешь, да ещё и забудешь.
Мессир вне форума Ответить с цитированием
Старый 25.01.2008, 01:34   #27
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Мессир Посмотреть сообщение
Это-то понятно) А разве нельзя сразу записать Rec, а не по отдельности каждое поле записи?


Так скажем, для большего удобства
"Сразу" нельзя. Два разных указателя показывают на два абсолютно разных "места" в памяти. Собственно строки членами записи не являются. Так что придется поочередно копировать сами строки
B_N вне форума Ответить с цитированием
Старый 25.01.2008, 01:36   #28
Мессир
Пользователь
 
Аватар для Мессир
 
Регистрация: 24.01.2008
Сообщений: 12
По умолчанию

B_N, спасибо, Вы бы ещё пояснили ситуацию с Классом, уже забыл кто про неё упоминал.... Там разве что-то иное может получиться? Аль я ошибаюсь? Просто в классе могут быть ещё и методы, вот их то точно фиг запишешь в файл...
Плохо, когда не знаешь, да ещё и забудешь.
Мессир вне форума Ответить с цитированием
Старый 25.01.2008, 01:40   #29
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Если структура играет жизненную роль в программе я привык ее приводить к классу, в нем можно реализовать один раз эти все нужные функции и просто его использовать как угодно в самой программе... Например как в с++ описан String, мне очень понравилось, жаль что нельзя переопределять операторы в object pascal... Методы - записывать в файл, вообщем не понял о чем Вы... ну да ладно
BOBAH13 вне форума Ответить с цитированием
Старый 25.01.2008, 01:42   #30
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

2 Мессир
Класс (физически) отличается от записи наличием скрытого указателя на его объявление, а объявление класса еще и указателем на родительский класс и таблицей указателей на методы. Так что Вы уточните, что всё-таки записывать хотите...
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить тактовою частоту процессора и узнать название активной видеокарты и объём памяти SalasAndriy C++ Builder 7 14.04.2012 16:17
Найти объём куба и площадь его боковой поверхности BASIC Ветренная Помощь студентам 23 02.06.2008 13:15
record/file potion Паскаль, Turbo Pascal, PascalABC.NET 3 10.05.2008 20:15
ОБъём скачанного из интернета Kostia Работа с сетью в Delphi 2 23.11.2007 00:25
Направьте на путь истинный! [FlekS] Помощь студентам 3 20.02.2007 11:51