Соединение повышения, Visual Studio и управление версиями

Как другие сказали - свойство чтения возвратит копию записи, таким образом, присвоение полей не будет действовать на копию, принадлежавшую TForm1.

Другая опция - что-то как:

  TRec = record
    A : integer;
    B : string;
  end;
  PRec = ^TRec;

  TForm1 = class(TForm)
  private
    FRec : PRec;
  public
    constructor Create;
    destructor Destroy; override;

    procedure DoSomething(ARec: TRec);
    property Rec : PRec read FRec; 
  end;

constructor TForm1.Create;
begin
  inherited;
  FRec := AllocMem(sizeof(TRec));
end;

destructor TForm1.Destroy;
begin
  FreeMem(FRec);

  inherited;
end;

Delphi разыменует указатель PRec для Вас, таким образом, вещи как это будут все еще работать:

Form1.Rec.A := 1234; 

нет никакой потребности в части записи свойства, если Вы не хотите подкачать буфер PRec это точки FRec в. Я действительно не предложил бы сделать такой свопинг через свойство так или иначе.

5
задан 26 August 2009 в 14:17
поделиться

5 ответов

Добавление путей ускорения в «каталоги Visual C ++» должно работать. Вы должны добавить включаемый путь <Полный путь здесь> \ boost_1_39_0 (без повышения в конце)
и путь к библиотеке <Полный путь здесь> \ boost_1_39_0 \ bin.v2 \ lib (bin.v2 - это каталог сцены, который в вашем случае может быть другим).

Лично я храню источники повышения в моем исходный код и использовать относительные пути в настройках проекта.

4
ответ дан 14 December 2019 в 08:56
поделиться

We use a repository containing 3rd party libraries, then use svn:externals to checkout the required parts into the project's base directory, finally use relative paths for additional include and library directories in the project file. Works well, only disadvantage is that you can end up with several boost copies on your harddisk. Using junctions (Windows' version of symbolic links for directories only, works at least from Win2k on, not sure about NT) you can get rid of the wasted space.

1
ответ дан 14 December 2019 в 08:56
поделиться

Мы помещаем все наши сторонние заголовки и библиотеки, используемые проектом, в дерево проекта в системе управления версиями. Это означает, что мы отслеживаем версию библиотек с помощью источника.

Затем мы ссылаемся на каталоги include и source в свойствах проекта. Мы не используем каталоги Visual C ++, так как это слишком сильно зависит от расположения файлов в различных системах разработчиков, а также невозможно отслеживать версии библиотек.

Единственным исключением из этого правила является платформа sdk при разработке с vc6 .

Бесстыдный плагин: теперь мы управляем настройками нашего проекта vc с помощью CMake, и это значительно упрощает эти вещи, особенно для больших проектов.

1
ответ дан 14 December 2019 в 08:56
поделиться

Вы сообщаете VS о Boost для каждого компьютера, а не для проекта. Так же, как directx и другие библиотеки, не относящиеся к конкретному проекту. Мы думаем, что разумно предположить, что ускорение используется более чем в одном проекте.

Мы не отслеживаем внешний источник библиотеки в нашем проекте SCM, если мы не знакомы с деталями реализации (исправление или что-то еще). Для boost, directx, windows sdk нам просто требуется, чтобы вы запустили соответствующий установщик и установили каталоги VC ++ при настройке среды разработки.

1
ответ дан 14 December 2019 в 08:56
поделиться

I use the BOOST_ROOT environment variable for some stuff, and it works OK. You have to manually create it, and then set the paths in the project files as "$(BOOST_ROOT)\include" and "$(BOOST_ROOT)\lib" (or whatever your layout uses). Everyone then has to set BOOST_ROOT on their machines to point to their Boost install.

0
ответ дан 14 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: