Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.10.2011, 01:37
bossyara bossyara вне форума
Прохожий
 
Регистрация: 08.10.2011
Сообщения: 5
Репутация: 10
По умолчанию Аналог TStringList для вещественных чисел

Хотелось бы поиметь аналог класса TstringList для вещественных чисел, так как необходима ассоциативность массива, в идеале:
List.Values['a'] := 3.265482;
Использовал TDictionary, там список переменных типа Variant, приводит к сильному тормозу проги, а считать приходится много.
Поиск мне не помог, хотя как мне кажется вопрос тривиальный.

Последний раз редактировалось bossyara, 08.10.2011 в 01:56.
Ответить с цитированием
  #2  
Старый 08.10.2011, 02:32
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
    Tfloat=class //создаем новый класс
    i:integer;
     end;
var
  Form1: TForm1;
  List:TstringList  ;
  float:Tfloat;//объявляем переменную этого класса
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//инициалтзация объектов
 List:=TstringList.Create  ;
 float:= Tfloat.Create;
 float.i:=43;
 list.AddObject('Элемент',float); //добавление строчки и привязанного к нему объект float

 form1.Caption:=inttostr(Tfloat(list.Objects[list.IndexOf('Элемент')]).i);
end;

end.


IndexOf это свойство возвращает индекс элемента по его названию, как раз то что тебе нужно..
Ответить с цитированием
  #3  
Старый 08.10.2011, 09:44
bossyara bossyara вне форума
Прохожий
 
Регистрация: 08.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

Супер!!! Моя ошибка что я заганял переменную типа, а не объект класса. Спасибо
Ответить с цитированием
  #4  
Старый 08.10.2011, 16:39
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Как-то не кошерно в типа TObject хранить число.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 08.10.2011, 16:50
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Как-то не кошерно в типа TObject хранить число.

не, конечно можно и такой финт ушами сделать
var
i:integer;
.................................................. ..
MyList.AddObject('элемент',TObject(i));
Ответить с цитированием
  #6  
Старый 08.10.2011, 17:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Pilot_Red
не, конечно можно и такой финт ушами сделать
var
i:integer;
.................................................. ..
MyList.AddObject('элемент',TObject(i));
Я имею ввиду вообще такой подход не красивый (ну как в холодильнике книги хранить).
По смыслу напрашивается такой подход:
Код:
type
  TInteger = class
  private
    FValue: integer;
    procedure SetValue(aValue: integer);
    function GetValue: integer;
  public
    property Value: integer read GetValue write SetValue;
    constructor Create(aValue: integer);
  end;
А ежели надо простое хранилище, то можно вектор использовать, или очередь, тем более, что в дельфе ща есть шаблоны.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 08.10.2011, 17:22
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Просто главное до автора смысл довести, что помимо строчек в TStringList можно хранить и объекты(хотя указатели на объекты лучше бы были).

А так да, полностью согласен с предыдущем постом!
Ответить с цитированием
  #8  
Старый 09.10.2011, 01:26
bossyara bossyara вне форума
Прохожий
 
Регистрация: 08.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

Может быть Вы правы!!!, но во-первых, надо закидывать все-таки действительное число, а не целое. И обязательна асоциативность массива. В любом случае мне главное чтоб считало правильно и скорость была приемлимая, поскольку програма не в коммерческих, а в научных целях используется!!!
Ответить с цитированием
  #9  
Старый 09.10.2011, 01:34
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А кто мешает здесь, изменить Integer на Single или Double?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 09.10.2011, 02:18
bossyara bossyara вне форума
Прохожий
 
Регистрация: 08.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

А ассоциации к примеру ['p']=3.13456 ???
Ответить с цитированием
  #11  
Старый 09.10.2011, 02:24
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну ведь указали только направления для размышления, полностью код за вас никто не напишет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #12  
Старый 09.10.2011, 02:33
bossyara bossyara вне форума
Прохожий
 
Регистрация: 08.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

Вот поэтому меня вполне устраивает вариант с списками. Спасибо!!!
Кстати, часто бывает, что рабочий холодильник используется как шкаф
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter