Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Автор: Frodo_Torbins
Дата сообщения: 04.04.2011 23:01
KF121
Да у них они по всему сайту раскиданы, нужно искать по ключевому слову CodeRage. Например: http://www.embarcadero.com/coderage5/sessions http://cc.embarcadero.com/coderage https://channel-e.embarcadero.com

Ludens
В виндовс можно задавать переменные, которые будут действовать только в рамках текущего процесса.
Автор: Ludens
Дата сообщения: 04.04.2011 23:21
Frodo_Torbins

Цитата:
В виндовс можно задавать переменные, которые будут действовать только в рамках текущего процесса

То есть ты полагаешь, что переменные окружения BDS, BDSBIN, BDSCOMMONDIR и т. д. предназначены для действия только в рамках текущего процесса?
Текущий процесс — это bds.exe?
Где и для чего можно воспользоваться такими переменными?
Автор: 0D0A
Дата сообщения: 04.04.2011 23:34
Ludens

Код: SET BDS=C:\Program Files\Embarcadero\RAD Studio\8.0
SET BDSBIN=%BDS%\Bin
"%BDSBIN%\dcc32.exe" Project1.dpr
Автор: Ludens
Дата сообщения: 04.04.2011 23:55
0D0A

Цитата:
"%BDSBIN%\dcc32.exe" Project1.dpr

Ну да, вот примерно таким образом я и хотел использовать эти переменные в бат-файле.
Но если для того, чтобы их использовать, придется их вначале объявить командами SET, то нафиг они нужны? Я тогда лучше пропишу все пути в явном виде: меньше строк получится.
А главное, не понимаю: зачем эти переменные описаны в Tools/Options/Environment Variables, если ими все равно невозможно воспользоваться?

Добавлено:

Цитата:
Ну и наверно можно использовать их в батниках, запускаемых в build events среды. Не проверял.

А я проверил. Невозможно.
Автор: 0D0A
Дата сообщения: 05.04.2011 00:15
Ludens

Цитата:
А я проверил. Невозможно.

Э... "занятно". Тогда получается, что тока в среде, во всяких опциях путей.

Добавлено:
PS. Проверил, работает вроде.
В pre-build засунул батник:

Код: echo %BDSBIN%
Автор: Ludens
Дата сообщения: 05.04.2011 01:08

Цитата:
В pre-build засунул батник

А я в Pre-Build засунул строку

Код: %BDSBIN%\brcc32.exe
Автор: 0D0A
Дата сообщения: 05.04.2011 01:33
Ludens
Ну наверно кавычки забыл или brcc32 возвращает ненулевой ExitCode если параметры не указаны.
Автор: Ludens
Дата сообщения: 05.04.2011 01:45
Не, кавычки не помогают, а brcc32 не запускается и с параметрами
Автор: 0D0A
Дата сообщения: 05.04.2011 02:01
Ludens

Код: Project "C:\Temp\Project1.dproj" (Build target(s)):
Target PreBuildEvent:
C:\Temp\test.cmd
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Target _PasCoreCompile:
..............
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.20
Автор: Ludens
Дата сообщения: 05.04.2011 02:32
0D0A
Иными словами, применение «собственных» переменных окружения возможно только в двух случаях:
1) при указании путей в Options (в формате $(BDS));
2) в Build Events, но только внутри вызываемого из Build Events bat-файла (в формате %BDS%).
Так?
Автор: 0D0A
Дата сообщения: 05.04.2011 02:54
Ludens
Все дочерние процессы наследуют переменные окружения среды (смотря как запускать, конечно, но похоже с этим все нормально). Например запусти такое в дебагере и отдельно:

Код: program Project1;

uses
Windows;

var
Buffer: array[0..MAX_PATH] of Char;
begin
ExpandEnvironmentStrings('%BDSBIN%', Buffer, MAX_PATH);
MessageBox(0, Buffer, 'BDSBIN', 0)
end.
Автор: mcka
Дата сообщения: 05.04.2011 10:18
Frodo_Torbins, V1s1ter - Спасибо
Добавил в свой проект FastMM с {$define EnableMemoryLeakReporting}, теперь окно Memory leak отображается и на моем компьютере.

Когда использовал EurekaLog Memory leak или ReportMemoryLeaksOnShutdown - окно отображалось, но не на всех компьютерах. как-то зависит от ОС.

привык, что EurekaLog Memory leak указывал в каком модуле в какой строчке и какой объект не был удален, в FastMM возможно так?
Автор: Frodo_Torbins
Дата сообщения: 05.04.2011 11:05
mcka
Попробуйте выяснить в чем разница между встроенным менеджером и FastMM.
А для отображения подробной информации в FastMM кажется были дополнительные опции.

Ludens
Проверьте еще запуск через MSBuild, по идее тоже должно работать.
Автор: ppkp
Дата сообщения: 06.04.2011 19:16
Как узнать рамер класса?
Раньше было
TMyData = packed record a1, a2..... end;
var MyData: TMyData;
для ReadBuffer(MyData, SizeOf(TMyData)) SizeOf(TMyData) вычислялся правильно;
Теперь заменил packed record на class
TMyData = class a1, a2..... end; и SizeOf(TMyData) равно 4.
Автор: murkovich
Дата сообщения: 06.04.2011 19:41
ppkp

Цитата:
Как узнать рамер класса?
...
Теперь заменил packed record на class
TMyData = class  a1, a2..... end; и SizeOf(TMyData) равно 4.

Так и должно быть, ибо это на самом деле указатель, и его размер 4 байта (в 32битном Delphi).

Размер класса вроде должен выдавать TMyData.InstanceSize
Автор: ppkp
Дата сообщения: 06.04.2011 19:56
murkovich
Я пробовал, но InstanceSize дает не совсем верные значения - немного больше, чем размер экземпляра класса, подсчитанный вручную. Чего-то добавляет
Автор: murkovich
Дата сообщения: 06.04.2011 20:10
ppkp

Цитата:
Я пробовал, но InstanceSize дает не совсем верные значения - немного больше, чем размер экземпляра класса, подсчитанный вручную. Чего-то добавляет

Класс на то и класс, что состоит не только из данных. По экземпляру ведь нужно иметь возможность определить, к какому классу он принадлежит. А для этого нужны внутренние поля. Т.е., в памяти класс столько места и занимает, сколько InstanceSize показывает.
Автор: Frodo_Torbins
Дата сообщения: 06.04.2011 21:59
ppkp
Добавьте сюда еще скрытое поле (кажется TMonitor) появившееся в последних версиях делфи.
Автор: ppkp
Дата сообщения: 07.04.2011 19:48
Frodo_Torbins
Спасибо, но это не проходит. Очевидно, нужно писать конвертер старых файлов в новые
Автор: Frodo_Torbins
Дата сообщения: 07.04.2011 20:35
Frodo_Torbins

Цитата:
Добавьте сюда еще скрытое поле (кажется TMonitor) появившееся в последних версиях делфи.
Я имел ввиду, что в последних версиях делфи к размеру объектов добавилось скрытое поле типа TMonitor.
А у вас что в файлах хранятся объекты скопированные из оперативки?
Автор: ppkp
Дата сообщения: 07.04.2011 20:41
Frodo_Torbins
В файлах хранятся записи, сделанные WriteBuffer(MyData, SizeOf(TMyData)), MyData были типа packed record. Теперь они стали типа class - ничего более не изменилось
Автор: Frodo_Torbins
Дата сообщения: 07.04.2011 20:58
ppkp
А чем не понравились записи?
Просто с классами этот фокус не пройдет. Сохранить в файл простым копированием вы их конечно сможете. А вот загрузить уже не получится - нужно будет всюду править ссылки на VMT как минимум. Поєтому и существуют TPersistent и TStream.ReadComponent/WriteComponent.
Автор: ppkp
Дата сообщения: 07.04.2011 21:08
Frodo_Torbins
Да я про то же. Теперь они (элементы класса) будут вынесены в published секцию и нужно будет написать конвертер для чтения старых. А новые будут читаться как Вы и упомянули. Спасибо за ответ
Автор: m0nty2k5
Дата сообщения: 17.04.2011 06:34
Кто-нить работает с KOL&MCK на 2011 дельфи?
У меня кроме пустого окна ни чего не выходит, какие бы я элементы не добавлял на форму!
Это из-за совместимости или я что-то не так сделал?
Автор: Frodo_Torbins
Дата сообщения: 17.04.2011 11:26
m0nty2k5
KOL использует старый тип object. Этот тип не рекомендуют использовать еще со времен Delphi1. Все это время его не выпиливали из компилятора только для обратной совместимости. Я слышал, что в DelphiXE его сильно урезали когда правили дженерики. Так что не удивительно что использующий object код перестал работать. Можно даже сказать "Наконец-то".
Автор: Varenik
Дата сообщения: 17.04.2011 12:57
Frodo_Torbins

Цитата:
старый тип object. Этот тип не рекомендуют использовать еще со времен Delphi1
А подробнее можно? Первый раз слышу...
Автор: JAPWork
Дата сообщения: 17.04.2011 13:37
Varenik
А подробнее, например, можно почитать дискуссию здесь или здесь
Автор: m0nty2k5
Дата сообщения: 17.04.2011 13:59
Frodo_Torbins

Цитата:
KOL использует старый тип object. Этот тип не рекомендуют использовать еще со времен Delphi1. Все это время его не выпиливали из компилятора только для обратной совместимости. Я слышал, что в DelphiXE его сильно урезали когда правили дженерики. Так что не удивительно что использующий object код перестал работать. Можно даже сказать "Наконец-то".

Спасибо за ответ!
Хоть теперь со спокойной душой буду Delphi 7 ставить ...
Автор: Frodo_Torbins
Дата сообщения: 17.04.2011 14:30
Ага, я когда искал себе навороченный программистский блокнот, тоже на ней остановился
Автор: m0nty2k5
Дата сообщения: 18.04.2011 01:02
История не заканчивается ...

При компиляции повылезали всякие потребности в DsgnIntf.dcu, DesignIDE.dcu и Proxies.pas
Это исправилось легко, благо не первый день зна гуглю, но, одно большое "НО": теперь всем программам написанных при использовании KOL&MCK требуется файл designide70.bpl размер в 611кб ... это шутка?

Гугл упорно молчит под всякого рода пыток - устал уже искать!

Добавлено:
Я убью тебя, лодочник!

Все решилось при помощи Build All - WTF?!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: Установка копоненты ZipTV


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.