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

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

Автор: eddoc
Дата сообщения: 13.04.2010 10:29
skeefavi

Присоединюсь к jonikDk по части выбора FireBird. Ибо:
1. Основные разработчики наши (русскоговорящие), все неясные моменты можно выяснить чуть ли не в онлайне на скруле (sql.ru)
2. DAC'и для FB/IB напрямую используют вызовы API, за счет чего все читается/пишется прямо-таки с космической скоростью (есть как платные [недорогие даже по российским меркам], так и бесплатные)
3. Есть куча внятной доки на русском языке на iBase.ru
4. Имеется как клиент-серверный (требующий инсталляции), так и файл-серверный (т.н. embedded - положил клиентскую либу рядом с экзешником и забыл ) варианты
5. FB - бесплатна!
Автор: jonikDk
Дата сообщения: 13.04.2010 20:56
skeefavi
еще один плюс, FIBPlus стоит копейки для жителей стран ExUSSR.
Автор: sasa
Дата сообщения: 16.04.2010 16:44
коллеги , кто использовал Remote Debugger для 2010 ?
перечитал кучу форумов - то ли тупой, то ли лыжи не едут

Трабл - при удаленной отладке не срабатывают точки останова - открывается окно ЦПУ .. и все .. (((

решение https://forums.codegear.com/thread.jspa?threadID=32063&tstart=60 не помогло ... что дальше курить ???


хех .. как всегда отчаявшись кидаешь клия и через 15 мин находишь решение
http://docwiki.embarcadero.com/RADStudio/en/Preparing_Files_for_Remote_Debugging
п.6
Автор: ppkp
Дата сообщения: 19.04.2010 14:09
Подскажите, пожалуйста, почему FCanvas := TDirect2DCanvas.Create(Handle); вываливается с Access Violation. DirectX поставил - все равно.
(WinXP SP3, Delphi 2010)
Автор: relictus
Дата сообщения: 19.04.2010 14:19
ppkp
Работает только на вин7
Автор: apnss
Дата сообщения: 20.04.2010 22:12
Пипл!

никто не копался в написании надстроек для сабжа?

напр.
интересует возможность переопределить последовательность вставки вновь созданных методов в код юнита (чтобы новые методы добавлялись в конец модуля - полезно для SVN) , проверка правописания строковых констант , сортировка модулей в юзесах и т.д.




Автор: Frodo_Torbins
Дата сообщения: 20.04.2010 22:29
apnss
Начать можно тут: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=899
Ну а дальше см. исходники cnWizards.
Автор: ingvar1972
Дата сообщения: 22.04.2010 13:55
Что может вызывать исчезновение нормальных иконок в палитре компонентов, вместо которых рисуются стандартные? Поясню. Установка. Запуск делфи. Палитра компонент отсутствует (не отображается). Через контекстное меню отмечаем галочкой Components. Появилась. Идем, к примеру, на Ribbon Controls. Иконки на месте. Перезапуск делфи - вместо нормальных иконок для риббона набор стандартных. Такая же ситуевина и для вкладок "серверс" и для комплекта IW...

ЗЫ. Пардон. RAD Studio 2010.
Автор: Frodo_Torbins
Дата сообщения: 22.04.2010 15:05
ingvar1972
Если на висте или семерке, то попробуйте "Запустить с правами Администратора".
Автор: ingvar1972
Дата сообщения: 22.04.2010 15:39
Frodo_Torbins
А если на XP SP3 ?
Автор: ZeUsM
Дата сообщения: 23.04.2010 08:29
Это вы его в D7 вид привели? Инструкция вроде была как это делать правильно, а палитра компонентов стандартная появляется справа после создания проекта.
Автор: tomahawk
Дата сообщения: 26.04.2010 21:35
Столкнулся с крайне неприятным моментом при работе с хваленым юникодом.
tStringList.IndexOf() работает правильно всегда... кроме случая, когда в одной строке есть мягкий знак в верхнем регистре, а в другой - в нижнем. Они всегда не равны при case insensitive сравнении:

procedure btn1Click(Sender: TObject);
var
v_l: TStringList;
v_str: string;
begin
v_str := 'ь';
v_l := TStringList.Create;
try
v_l.Text := AnsiUpperCase(v_str);
if v_l.IndexOf(v_str) >= 0 then
MessageDlg('Найдено!', mtInformation, [mbOK], 0)
else
MessageDlg('', mtWarning, [mbOK], 0)
finally
FreeAndNil(v_l);
end;
end;

Точно так же не работает CompareText:
CompareText(v_str, AnsiUpperCase(v_str))

Можно, конечно, переводить в верхний регистр, или написать наследника и перекрыть функцию, но... какие еще есть подводные камни в Эмбаркадеро?
Автор: marser
Дата сообщения: 27.04.2010 07:12
tomahawk
У меня работает (русская Windows XP SP3, Delphi 2010 Update 4, 5).
Автор: JAPWork
Дата сообщения: 27.04.2010 07:53
tomahawk
Не под "семеркой" сидите? Если "да", то Вас еще много ждет неожиданностей... "и"-"й" например...
Очень забавно выглядит, когда поиск в одной и той же программе запущен на двух машинах с разной операционкой.
Автор: ppkp
Дата сообщения: 27.04.2010 11:46
Подскажите, пожалуйста, как организовать "список списков".
type
TData1 = class;
TData2 = class;

TData = class;//TList< ?? - тут я не знаю

TMyProj = class(TObject)
private
// FData1: TList<TData1>;
// FData2: TList<TData2>;

FData: пытаюсь его определить, см ниже
protected
// function GetData1(Index: integer): TData1;
// function GetData2(Index: integer): TData2;

function GetData(Ind1, Ind2: integer): TData;//?????
public
// property Data1[Index: integer]: TData1 read GetData1;
// property Data2[Index: integer]: TData2 read GetData2;

property Data[Ind1, Ind2: integer]: TData read GetData;
....
end;

Пытаюсь написать через Generics.Collections
FData: TList<TList<TData1>.TTData2>;
FData: TList<TList<TData1>.TData2>;
FData: TList<TData1, TData2>;
Лезут всякие ошибки - не работал я еще с этим. Можно, конечно, через array of array, но хотелось бы, чтобы было что-то типа "списка списков"
Автор: V1s1ter
Дата сообщения: 27.04.2010 12:28
ppkp

Цитата:
Подскажите, пожалуйста, как организовать "список списков".

Все, что Вы привели ниже это (по крайней мере для меня) слишком сложно.
Ответо в Вашем вопросе, вот он: "список списков".
В каждом объекте TList хранится масив указателей на что то, вот пусть каждый указатель и указывает на объект TList. Вот и все. Вот фрагмент в пример:

Код:
var L, SubL: TStringList;
begin
L := TStringList.Create; /// создаем
for i:=0 to 9 do begin
SubL := TStringList.Create;
L.Add('Это список '+IntToStr(i), TObject(SubL));
end;
SubL := TStringList(L.Objects[***]); // получаем доступ
Автор: ppkp
Дата сообщения: 27.04.2010 12:53
V1s1ter
Спасибо за Ваш пример, но это реализация. Меня же интересует секция interface, и то, как описать "список спсков". В случае с массивом все просто
type
TData = array of array of TMyRecordOrClassData;

TMyClass = class
private
FData: TData;
...
public
property Data[Ind1, Ind2: integer]: TData read GetData;
end;
И в GetData я получаю доступ к элементу FData[I,J].
Меня интересует случай когда, образно говоря, можно написать что-то типа

type
TData = TList of TList of TMyRecordOrClassData;
А все остальное уже возможно.

PS В Generics.Collections есть описание TDictionary как вариант двойного списка. Но я не знаю, подойдет ли это в моем случае
Автор: Alexos
Дата сообщения: 27.04.2010 13:40

Цитата:
ppkp


FLists : TList<TList>; - список элементы которого тоже списки.
Автор: V1s1ter
Дата сообщения: 27.04.2010 13:49
ppkp
Я не понимаю Ваш вопрос.
Вам нужен многомерный список элементов некоторого типа с доступом по индексам?
И список нужен для того чтобы не реализовывать каждый раз процедуры вставки, удаления, перемещения и сортировки элементов списка, реализация которых потребуется если в место списка использовать многомерные массивы?
Автор: jonikDk
Дата сообщения: 27.04.2010 13:54

Цитата:
Меня же интересует секция interface, и то, как описать "список спсков".

TLilstList = class(TList)
FList: TList
end;

вот и будет список списков
Автор: V1s1ter
Дата сообщения: 27.04.2010 13:54
ppkp
В догонку, может скажите зачем Вам нужны такие списки? Может оказатся, что они вам и не нужны, может оказатся что действительно лучше масив или чтото тира TTreeView/
Автор: Frodo_Torbins
Дата сообщения: 27.04.2010 14:12
ppkp
Так вроде компилится:
Код: [no]type
TData = class
Field1: Integer;
end;
TInnerList = TList<TData>;
TOuterList = TObjectList<TInnerList>;
var
l: TOuterList;
begin
l[1][1].Field1 := 2;[/no]
Автор: ppkp
Дата сообщения: 27.04.2010 14:30
Alexos
Спасибо. Я этот вариант рассматривал, но у меня что-то не получалось с destructor Destroy.

а для GetData все вроде бы скомпилировалось (будет ли работать - не знаю)
function TMyProj.GetData(Ind1, Ind2: integer): TList<TList>;
begin
Result := FDataList.Items[Ind1].Items[Ind2];
end;
Автор: tomahawk
Дата сообщения: 27.04.2010 14:37

Цитата:
Не под "семеркой" сидите? Если "да", то Вас еще много ждет неожиданностей... "и"-"й" например...
Очень забавно выглядит, когда поиск в одной и той же программе запущен на двух машинах с разной операционкой.


мдя. невесело, прямо скажем
Автор: ppkp
Дата сообщения: 27.04.2010 14:42
V1s1ter
Мне нужен именно двойной массив Data[I, J], но в виде спсков. С обычным динамическим массивом работать не очень удобно. А TreeView не проходит, т.к. индексы "равноправны".

Frodo_Torbins

Цитата:
А если "class" заменить на "record", то нет

Спасибо, именно поэтому и пытаюсь освоить Generics.Collections
Автор: Frodo_Torbins
Дата сообщения: 27.04.2010 14:53
ppkp
Для рекордов тоже наверно можно сделать, если в геттере возвращать не сам рекорд а ссылку на него. Хотя, это же тогда и сеттер переделывать...
Автор: V1s1ter
Дата сообщения: 27.04.2010 14:57
Frodo_Torbins
ppkp
Я окончательно потерялся ... Как у Вас такие выражения компилятся

Цитата:
TInnerList = TList<TData>;

У меня компилятор (D2007) выдает, что вместо ">" требуется ";"
Автор: ppkp
Дата сообщения: 27.04.2010 15:07
V1s1ter

Цитата:
Как у Вас такие выражения компилятся

Дык это Delphi 2010
Автор: JAPWork
Дата сообщения: 27.04.2010 15:20
tomahawk


Цитата:
мдя. невесело, прямо скажем

Эти вещи достаточно удобно проверять в простом Ёкселе...
Вводишь несколько ячеек, потом - сортируешь и любуешься.
Например в "семерке" получим из
"И11"
"И13"
"Й12"
вот такое
"И11"
"Й12"
"И13"
...
Вот у меня в программе имя "Йоника" шороху и наделало, так как влезло между "Ионасом" и "Ириной". Софтинка была сделана на 2007 Студии.

Так что - тут Ембаркадеро с Юникодом идет вторым номером...
Автор: V1s1ter
Дата сообщения: 27.04.2010 15:39
ppkp
Тогда я пас... и тогда я наверное понял, что Вам надо не реализацию объектов, а "как проще в коде программы написать, чтоб меньше слов писать."

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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