Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.008 c
1-1222455005
Игорь
2008-09-26 22:50
2009.11.08
Как получить доступ к процессу audiodg.exe под Windows Vista


2-1253114011
FEV
2009-09-16 19:13
2009.11.08
Почему данная функция выводит не все имена папок???


2-1253783148
Nutz
2009-09-24 13:05
2009.11.08
передача файлов в пассивном режиме FTP


2-1253891798
dplz
2009-09-25 19:16
2009.11.08
Сохранении в .ini или в реестр всех переменных/параметров...


15-1252446580
Германн
2009-09-09 01:49
2009.11.08
Не могу понять установку компонент в Д2007.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский