Есть ли какие-либо компоненты “схемы выражения идей” для Delphi? (собственный VCL предпочтительно) [закрытый]

Разница между == и equа меня немного смутила, пока я не решил поближе рассмотреть ее. Многие из них говорят, что для сравнения строки вы должны использовать equals, а не ==. Надеюсь, что в этом ответе я смогу сказать разницу.

Лучший способ ответить на этот вопрос будет, задав несколько вопросов самому себе. так что давайте начнем:

. Каков результат для следующей программы:

String mango = "mango";
String mango2 = "mango";
System.out.println(mango != mango2);
System.out.println(mango == mango2);

, если вы говорите,

false
true

Я скажу, что вы right , но почему вы так сказали? и если вы говорите, что выходной сигнал,

true
false

Я скажу, что вы ошибочны , но я все равно спрошу вас, почему вы думаете, что это правильно?

Хорошо, попробуем ответить на этот вопрос:

Каков выход для следующей программы:

String mango = "mango";
String mango3 = new String("mango");
System.out.println(mango != mango3);
System.out.println(mango == mango3);

Now Если вы говорите,

false
true

Я скажу, что вы ошибочны , но почему это неправильно сейчас? правильным выходом для этой программы является

true
false

. Пожалуйста, сравните вышеуказанную программу и попытайтесь об этом подумать.

Хорошо. Теперь это может помочь (пожалуйста, прочтите следующее: напечатать адрес объекта - невозможно, но мы все же можем его использовать.)

String mango = "mango";
String mango2 = "mango";
String mango3 = new String("mango");
System.out.println(mango != mango2);
System.out.println(mango == mango2);
System.out.println(mango3 != mango2);
System.out.println(mango3 == mango2);
// mango2 = "mang";
System.out.println(mango+" "+ mango2);
System.out.println(mango != mango2);
System.out.println(mango == mango2);

System.out.println(System.identityHashCode(mango));
System.out.println(System.identityHashCode(mango2));
System.out.println(System.identityHashCode(mango3));

можете ли вы просто попытаться подумать о вывод последних трех строк в приведенном выше коде: для меня ideone напечатал это ( вы можете проверить здесь код ):

false
true
true
false
mango mango
false
true
17225372
17225372
5433634

О! Теперь вы видите, что идентификаторHashCode (манго) равен идентификаторуHashCode (mango2). Но он не равен identityHashCode (mango3)

. Хотя все строковые переменные - mango, mango2 и mango3 - имеют одинаковое значение, который является «манго», identityHashCode() все еще не является одинаковым для всех.

Теперь попробуйте раскомментировать эту строку // mango2 = "mang"; и запустите его снова, на этот раз вы увидите, что все три identityHashCode() отличаются друг от друга. Хм, это полезный намек

, мы знаем, что если hashcode(x)=N и hashcode(y)=N => x is equal to y

, я не уверен, как java работает внутри, но я предполагаю, что это то, что произошло, когда я сказал:

mango = "mango";

java создал строку "mango", которая была указана (указана) переменной mango примерно так

mango ----> "mango"

Теперь в следующая строка, когда я сказал:

mango2 = "mango";

На самом деле она повторно использовала ту же строку "mango", которая выглядит примерно так

mango ----> "mango" <---- mango2

И манго, и манго2, указывающие на ту же ссылку Теперь когда я сказал

mango3 = new String("mango")

Фактически он создал совершенно новую ссылку (строку) для «манго». который выглядит примерно так:

mango -----> "mango" <------ mango2

mango3 ------> "mango"

, и поэтому, когда я выставляю значения для mango == mango2, он выдает true. и когда я вытащил значение для mango3 == mango2, он выпустил false (даже если значения были одинаковыми).

и когда вы раскоментировали строку // mango2 = "mang";, она фактически создала строку " mang ", который повернул наш график следующим образом:

mango ---->"mango"
mango2 ----> "mang"
mango3 -----> "mango"

Вот почему идентификаторHashCode для всех не одинок.

Надеюсь, это поможет вам, ребята. На самом деле, я хотел создать тестовый пример, где == fail и equals (). Пожалуйста, не стесняйтесь комментировать и дайте мне знать. Если я ошибаюсь.

5
задан 17 August 2008 в 02:02
поделиться

9 ответов

Я знаю, что Graphcis32 использовался для реализации подобного Visio схематического изображения. На 'прикладной странице существует ссылка на MindVisualizer, доказывая, что это может использоваться для интеллект-карт также. Не out-of-the-box решение, хотя....

Studio Схемы TMS, как уже упомянуто, и DevExpress OrgChart или FlowChart могут добиться цели.

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

Вы могли бы хотеть взглянуть на Studio Схемы программного обеспечения TMS, не конкретно компонент схемы выражения идей, но он действительно предлагает функциональность схематического изображения в Вашем приложении Дельфи. и лицензия разработчика действительно идет с исходным кодом.

3
ответ дан 14 December 2019 в 01:22
поделиться

Как бывший разработчик Delphi, я симпатизирую. Это раньше было, что Вы могли найти свободный компонент с источником для примерно чего-либо. Вы, вероятно, знаете о Delphi Супер Страницу (мой старый дежурный источник для всего Delphi). Я смотрел; никакие компоненты схемы выражения идей, там. (Конечно, сайт не был обновлен приблизительно за 2 года).

У меня действительно есть предложение, тем не менее, но это не оптимально: StarUML был записан в Delphi, и он содержит пользовательские компоненты для создания диаграмм UML. Источник доступен для скачивания, и мне кажется, что примитивы UML (поля, строки, облака и такой) могли быть адаптированы к Вашей цели. Веб-сайтом является http://staruml.sourceforge.net/en/.

Я знаю, что это не идеально, но по крайней мере Вы не должны были бы запускать с нуля.

Удачи!

3
ответ дан 14 December 2019 в 01:22
поделиться

Другим большим источником для компонента Delphi является torry.net. При поиске там я нашел интересно выглядящий компонент: Графические объекты.

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

JVCL: Демонстрация под названием JvDesignerDemo

-1
ответ дан 14 December 2019 в 01:22
поделиться

Не точно, что Вы ищете, но это могла быть опция, если Вы не можете найти собственный компонент VCL.

Древовидный GX http://www.componentsource.com/products/treegx/index-gbp.html является компонентом интеллект-карты.NET с исходным кодом.

Вы могли затем использовать Гидру http://www.remobjects.com/product/? идентификатор = {B6BD1030-F630-4DA8-9018-73C03265A0EF} от RemObects для хостинга управления WinForms в приложении Delphi при движении чистого .NET не является опцией.

Править: предварительный просмотр кажется показу ссылок хорошо, но когда я отправляю сообщение, они неправы, таким образом, я должен был поместить встроенные URL

0
ответ дан 14 December 2019 в 01:22
поделиться
0
ответ дан 14 December 2019 в 01:22
поделиться

Steema Software имеет большой компонент под названием TeeTree, который, кажется, делает все. Я не уверен, сколько это стоит (затраты действующее слово),

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


Это - компонент VCL.

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

Я знаю только один компонент отображения разума: MetaTree . Он поддерживает Delphi 5, 6, 7 и 2005 и поставляется с полным исходным кодом.

1
ответ дан 14 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

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