![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
pointer. Не могу разобраться... [D7]
новый © (2009-09-15 12:36:00)Подскажите пожалуйста. Есть такая библиотека 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?
новый (2009-09-18 16:34:00) [1]и опять Большое спасибо!
clickmaker (2009-09-18 14:46:00) [2]> где я не прав? и как нужно это писать правильно?
память в куче надо выделять
tabl.add("some string",StrNew(Inttostr(i)+'#'+Inttostr(j)));
потом, когда не нужна будет, освобождать StrDispose
новый (2009-09-18 06:10:00) [3]Разобрался. работает... там была не подключена зависимость(
Теперь у меня еще один глупый вопрос...
вот если мне надо записать туда строку, а потом её прочитать, то как нужно писать?
пробовал так:
tabl.add("some string",Pointer(Inttostr(i)+'#'+Inttostr(j)));
ShowMessage(String(Find(Key)));
Но выдает аксесс виолэйшн при выводе мессаджа...
Подскажите, где я не прав? и как нужно это писать правильно?
новый (2009-09-15 13:37:00) [4]странно. нву ладно. в любом случае БОЛЬШОЕ СПАСИБО. буду искать другие ошибки.
clickmaker (2009-09-15 13:35:00) [5]ну да
новый (2009-09-15 13:33:00) [6]ну... не знаю...
вот так надо делать tabl.add("some string",Pointer(i));?
clickmaker (2009-09-15 13:25:00) [7]> i-локальная переменная одной процедуры а мессадж вызывается
> из другой
а это тут неважно. что pointer, что integer - 4 байта
где-то в другом месте косяк
точно не указатель на i передаешь?
новый (2009-09-15 13:15:00) [8]да для разных ключей.
some parameter-число строк в файле some string-строка фала с номером i
еще одно уточнение: i-локальная переменная одной процедуры а мессадж вызывается из другой
clickmaker (2009-09-15 13:11:00) [9]и код желательно более реальный выкладывать.
непонятно, что такое "some parameter" и "some string"
clickmaker (2009-09-15 13:10:00) [10]быть не может
для разных ключей?
новый (2009-09-15 13:07:00) [11]пробовал так... но все время возвращает одно и то же число...
clickmaker (2009-09-15 13:01:00) [12]> значение i на данной интерации
Pointer(i)
ShowMessage(IntToStr(Integer(Find(Key))));
новый (2009-09-15 12:58:00) [13]значение i на данной интерации
новый (2009-09-15 12:56:00) [14]в общем этим циклом я перебираю строки некого файла. хеш таблица мне нужна для быстрого поиска номера строки в которой содержится некий текст. поэтому в дата мне нужно записать этот номер. тоесть значение i
clickmaker (2009-09-15 12:48:00) [15]> в таблицу запишется не то что мне нужно... Я прав?
прав.
а что нужно?