Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.08;
Скачать: CL | DM;

Вниз

pointer. Не могу разобраться...   Найти похожие ветки 

 
новый   (2009-09-15 12:36) [0]

Подскажите пожалуйста. Есть такая библиотека GsvHashTable. (http://gurin.tomsknet.ru/delphihashtable.html). Я хочу использовать TGsvStringHashTable.

Вот её описание:
TGsvStringHashTable = class(TGsvHashTableBase)
public
 constructor Create(TableSize: Integer);
 function    Add(const Key: String; Data: Pointer): Boolean; overload;
 function    Find(const Key: String): Pointer; overload;
end;

я использую её примерно вот так:
var i:Integer;
tabl:TGsvStringHashTable;
begin
tabl:=TGsvStringHashTable.create(65536);
for i:=0 to "some parameter"  do
tabl.add("some string",@i);

......

мне почему то кажется что так делать нельзя, и в таблицу запишется не то что мне нужно... Я прав?
И второй вопрос.  как мне вывести например в showmessage результат выполнения функции find?


 
clickmaker ©   (2009-09-15 12:48) [1]

> в таблицу запишется не то что мне нужно... Я прав?

прав.
а что нужно?


 
новый   (2009-09-15 12:56) [2]

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


 
новый   (2009-09-15 12:58) [3]

значение i на данной интерации


 
clickmaker ©   (2009-09-15 13:01) [4]

> значение i на данной интерации

Pointer(i)

ShowMessage(IntToStr(Integer(Find(Key))));


 
новый   (2009-09-15 13:07) [5]

пробовал так... но все время возвращает одно и то же число...


 
clickmaker ©   (2009-09-15 13:10) [6]

быть не может
для разных ключей?


 
clickmaker ©   (2009-09-15 13:11) [7]

и код желательно более реальный выкладывать.
непонятно, что такое "some parameter" и "some string"


 
новый   (2009-09-15 13:15) [8]

да для разных ключей.
some parameter-число строк в файле some string-строка фала с номером i

еще одно уточнение: i-локальная переменная одной процедуры а мессадж вызывается из другой


 
clickmaker ©   (2009-09-15 13:25) [9]

> i-локальная переменная одной процедуры а мессадж вызывается
> из другой

а это тут неважно. что pointer, что integer - 4 байта
где-то в другом месте косяк
точно не указатель на i передаешь?


 
новый   (2009-09-15 13:33) [10]

ну... не знаю...
вот так надо делать tabl.add("some string",Pointer(i));?


 
clickmaker ©   (2009-09-15 13:35) [11]

ну да


 
новый   (2009-09-15 13:37) [12]

странно. нву ладно. в любом случае БОЛЬШОЕ СПАСИБО. буду искать другие ошибки.


 
новый   (2009-09-18 06:10) [13]

Разобрался. работает... там была не подключена зависимость(

Теперь у меня еще один глупый вопрос...
вот если мне надо записать туда строку, а потом её прочитать, то как нужно писать?

пробовал так:

tabl.add("some string",Pointer(Inttostr(i)+"#"+Inttostr(j)));

ShowMessage(String(Find(Key)));

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


 
clickmaker ©   (2009-09-18 14:46) [14]

> где я не прав? и как нужно это писать правильно?

память в куче надо выделять
tabl.add("some string",StrNew(Inttostr(i)+"#"+Inttostr(j)));
потом, когда не нужна будет, освобождать StrDispose


 
новый   (2009-09-18 16:34) [15]

и опять Большое спасибо!



Страницы: 1 вся ветка

Текущий архив: 2009.11.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1252592316
DimDim
2009-09-10 18:18
2009.11.08
Касперский блокирует процесс


11-1207381883
Сашик
2008-04-05 11:51
2009.11.08
Запись в ресурсы DLL


2-1253197239
d@vinchi
2009-09-17 18:20
2009.11.08
Обновление данных в DbGrid в реальном времени?


8-1194133995
POMbI4
2007-11-04 02:53
2009.11.08
Конвертирование AVI в BMP


2-1254033768
faiwer
2009-09-27 10:42
2009.11.08
Autosize для RichEdit