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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 13:16   #11
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Полностью скопировал код, но...

P.S. Вернусь вечером...
Изображения
Тип файла: jpg GrabCaptureScreenPart12.jpg (156.4 Кб, 125 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 19.10.2009, 13:26   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Alex Cones
Странно... а у меня запускается... И что удивительно работает
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2009, 17:17   #13
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Так, ладно, оставим классы до лучших времен. Поехали по записям. Вот я тут оч. хорошее свойство у записей нашел: Case
Код:
 TFruit = Record
    name : string[20];
    Case isRound : Boolean of // Выберите, как отобразить следующий раздел
      True  :
        (diameter : Single);  // Отображение той же самой памяти как длина
      False :
        (length   : Single;   // Отображение той же самой памяти как диаметр
         width    : Single);
  end;
http://delphibasics.ru/Record.php
И мне вот, что не понятно: вот система арендовала память под две такие записи. Предположим одна будет банан, другая яблоко. Яблоко - круглое, т.е. IsRound - TRUE, в записи следующее:
Код:
name :='Яблоко___________';(20 байт)
isRound:=TRUE;                    (1 байт)
diametr:=1                           (4 байта)
Итого - 25 байт
Банан:
name...                               (20 байт)
IsRound:=False                     (1 байт)
Length:=2                           (4 байта)
Width:=4                             (4 байта)
Итого - 29 байт.
И что? Система смотрит в будущее и пророчествует, сколько памяти занимать?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 19.10.2009, 19:26   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Система смотрит в будущее и пророчествует, сколько памяти занимать
Система не будет крохоборствовать, ей известно что памяти потребуется НЕ БОЛЬШЕ чем 29 байт, столько она и отведет.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.10.2009, 19:28   #15
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А к чему тогда в комментах это:?
Цитата:
// Отображение той же самой памяти как диаметр
// Отображение той же самой памяти как длина
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 19.10.2009, 21:28   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

память выделяется на большую ветку кейса записи.
комменты верны...просто они немного не понятны на первый взгляд,
диаметр и длина это одно и тоже..
а ширина вообще левая
но под нее память есть...и не всегда она используется
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2009, 08:13   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вот я тут оч. хорошее свойство у записей нашел: Case
Я так и не понял в чем преимущество такого чудизма
Мне больше нравится Variant, хотя он и имеет под собой основу такой вариантной переменной.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.10.2009, 16:10   #18
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

В современных Delphi (2006+) у записей тоже могут быть свойства.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 20.10.2009, 18:57   #19
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
В современных Delphi
К сожалению система не тянет.

Проблема:
Код:
unit UNTVars;

interface

Uses
 SysUtils,Graphics;
Type
 TJunction = record
             Occupied       :Boolean;   {Занят ли узел Да/Нет                  }
             OccupiedBy     :Byte;      {ID элемента, который занял данный узел}
             OccupiedIn     :Byte;      {№ узла элемента, который занял        }
             X              :Integer;   {Х координата соединения               }
             Y              :Integer;   {Y координата соединения               }
             JType          :Byte;      {Тип соединения (клей, болты и пр.)    }
 End;
 TDetail   = record
             Name           :String[20];{Имя детали. Ex.:'Платформа T3'        }
             Mass           :Integer;   {Масса  в граммах                      }
             Cost           :Integer;   {Стоимость детали в рублях             }
             ID             :Integer;   {№ детали в объекте                    }
             JunCount       :Byte;      {Количество узлов                      }
             Junction       :Array of TJunction; {Узлы                         }
             Source         :Array[0..15] of TBitMap; {Анимация                }
 End;
implementation

Procedure CreateDetail(Detail:TDetail);
 Begin
  SetLength(Detail.Junction,Detail.JunCount);
 End;

Procedure LoadDetail(SourceFile :String; Var Detail:TDetail);
 Var
  F:TextFile;
  S:String;
  I:Integer;
 Begin
  AssignFile(F,SourceFile);
  Reset(F);
  ReadLn(F,S);
  Detail.Name:=S;
  ReadLn(F,S);
  Detail.Mass:=StrToInt(S);
  ReadLn(F,S);
  Detail.Cost:=StrToInt(S);
  ReadLn(F,S);
  Detail.JunCount:=StrToInt(S);
  CreateDetail(Detail);
  For I:=0 to Detail.JunCount-1 do
   Begin
    ReadLn(F,S);
    Detail.Junction[I].X:=StrToInt(S);
    ReadLn(F,S);
    Detail.Junction[I].Y:=StrToInt(S);
    ReadLn(F,S);
    Detail.Junction[I].JType:=StrToInt(S);
   End;
  CloseFile(F);
 End;

end.
Код:
unit UNTMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UNTVars, StdCtrls;

type
  TFRMMain = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRMMain: TFRMMain;
  CDir   : String;
  Detail1,Detail2:TDetail;
implementation

{$R *.dfm}

procedure TFRMMain.Button1Click(Sender: TObject);
begin
 CDir:=ExtractFilePath(ParamStr(0));
 LoadDetail(CDir+'GameData\Objects\000.obj',Detail1);
end;

end.
Undeclared Idetifier...

О_о
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.10.2009, 19:01   #20
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

чтото не вижу заголовков ваших процедур в интерфесном разделе
Код:
unit UNTVars;

interface

Uses
 SysUtils,Graphics;
Type
 TJunction = record
             Occupied       :Boolean;   {Занят ли узел Да/Нет                  }
             OccupiedBy     :Byte;      {ID элемента, который занял данный узел}
             OccupiedIn     :Byte;      {№ узла элемента, который занял        }
             X              :Integer;   {Х координата соединения               }
             Y              :Integer;   {Y координата соединения               }
             JType          :Byte;      {Тип соединения (клей, болты и пр.)    }
 End;
 TDetail   = record
             Name           :String[20];{Имя детали. Ex.:'Платформа T3'        }
             Mass           :Integer;   {Масса  в граммах                      }
             Cost           :Integer;   {Стоимость детали в рублях             }
             ID             :Integer;   {№ детали в объекте                    }
             JunCount       :Byte;      {Количество узлов                      }
             Junction       :Array of TJunction; {Узлы                         }
             Source         :Array[0..15] of TBitMap; {Анимация                }
 End;

Procedure CreateDetail(Detail:TDetail);
Procedure LoadDetail(SourceFile :String; Var Detail:TDetail);

implementation

Procedure CreateDetail(Detail:TDetail);
 Begin
  SetLength(Detail.Junction,Detail.JunCount);
 End;

Procedure LoadDetail(SourceFile :String; Var Detail:TDetail);
 Var
  F:TextFile;
  S:String;
  I:Integer;
 Begin
  AssignFile(F,SourceFile);
  Reset(F);
  ReadLn(F,S);
  Detail.Name:=S;
  ReadLn(F,S);
  Detail.Mass:=StrToInt(S);
  ReadLn(F,S);
  Detail.Cost:=StrToInt(S);
  ReadLn(F,S);
  Detail.JunCount:=StrToInt(S);
  CreateDetail(Detail);
  For I:=0 to Detail.JunCount-1 do
   Begin
    ReadLn(F,S);
    Detail.Junction[i].X:=StrToInt(S);
    ReadLn(F,S);
    Detail.Junction[i].Y:=StrToInt(S);
    ReadLn(F,S);
    Detail.Junction[i].JType:=StrToInt(S);
   End;
  CloseFile(F);
 End;

end.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
записи - структура (пару вопросов) felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.05.2009 03:23
Текстовый файл - Структура (записи) felmor Паскаль, Turbo Pascal, PascalABC.NET 0 18.05.2009 22:36
Записи (структура). проверить. felmor Паскаль, Turbo Pascal, PascalABC.NET 1 16.05.2009 17:24
Структура программы, записи. Нужна проверка. Roof Общие вопросы Delphi 2 18.01.2009 21:57