Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c