- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
flag:=true;
if keyList = nil then
begin
new(keyList);
new(keylist^.HisTerms);
new(keylist^.hisChapter);
keyList^.value:= HashFunction(edit1.Text);
keylist^.hisChapter^.number:=strtoint(edit2.Text);
keylist^.HisTerms^.TheTerm:=edit1.Text;
keylist^.HisTerms^.hisPage:=keylist^.hisChapter;
keylist^.HisTerms^.hisKey:=keylist^.value;
keylist^.hisChapter^.nextPage:=nil;
keylist^.HisTerms^.nextTerm:=nil;
memo1.Lines.Add(edit1.Text + ' (' + edit2.Text+')');
end
else
begin
keyTemp:=keylist;
temp:=HashFunction(edit1.Text);
if keytemp^.value = temp then
begin
termtemp:=keytemp^.HisTerms;
chaptertemp:=keytemp^.hisChapter;
while termtemp^.nextTerm<> nil do
termtemp:=termtemp^.nextTerm;
while chaptertemp^.nextPage<> nil do
chaptertemp:=chaptertemp^.nextPage;
new(termtemp^.nextTerm);
new(chaptertemp^.nextPage);
chaptertemp^.nextPage^.number:=strtoint(edit2.Text);
termtemp^.nextTerm^.TheTerm:=edit1.Text;
termtemp^.nextTerm^.nextTerm:=nil;
chaptertemp^.nextPage^.nextPage:=nil;
termtemp^.hisKey:=HashFunction(edit1.Text);
termtemp^.hisPage:=chaptertemp^.nextPage;
flag:=false;
end
else
keytemp:=keytemp^.NextKey;
if not(flag) then
begin
keytemp:=keylist;
while keytemp^.NextKey<>nil do
keytemp:=keytemp^.NextKey;
new(keytemp^.NextKey);
new(keytemp^.NextKey^.HisTerms);
new(keytemp^.NextKey^.hisChapter);
keytemp^.NextKey.value:=HashFunction(edit1.Text);
keytemp^.NextKey^.hisChapter^.nextPage:=nil;
keytemp^.NextKey^.HisTerms^.nextTerm:=nil;
keytemp^.NextKey^.hisChapter^.number:=strtoint(edit2.Text);
keytemp^.NextKey^.HisTerms^.TheTerm:=edit1.Text;
keytemp^.NextKey^.HisTerms^.hisPage:=keytemp^.NextKey^.hisChapter;
keytemp^.NextKey^.HisTerms^.hisKey:=HashFunction(edit1.Text);
end;
Создание хэш-таблицы терминов и добавление каждому термину под-термина.
Флаг Вам в руки.
^_^
^_*
^_>
Симон, не проходи мимо! Это проги для тебя, любимого.
Я очень слаб в этом.
Поясни хотелку
p.s. Ты стал намного лучше за то время, пока я отсутствовал. Такой Кегги мне нравится. Не сворачивай, ты идёшь истинным путём.
я не думаю, что по строкам есть отдельная литература. Почитай какой нибудь учебник по делфе, раздел точно есть
Не теряй бдительности, Кегги... Вдруг он её не просто так обслюнявил, а чтобы, кхм, воспользоваться ей.
> Не теряй бдительности, Кегги...
Зачем же перенимать плохие привычки? Уж и не знаю что он тебе написал, но... Добавь себе в юзер скрипт наконец Стертора. А то такими темпами и вас скоро придется туда добавлять.
Ещё уши вырезать
Нагибайся.
Троллить будете кого-нибудь другого.
2. Борманд не тупая пизда.
Ну... я не знаю, какой вывод можно сделать из этих тезисов.
Кажется, мы рискуем снова скатиться в политику. Сейчас придёт Стертор и надаёт нам лопатой.
Так это его лопата? А кактус чей?
Всё же, без сами-знаете-кого в политику сложно скатиться.
А почему Вы именно у меня спрашиваете о принадлежности кактуса и лопаты?
function SendMail(p:pmailstruct):bool;stdcall;
...
exports SendMail;
Я уже подключал свою dll к проге, написанной на Visual Basic - всё работает.
Меня смущал типизированный указатель (вдруг они какие-то особые в дельфях, может, их нельзя экспортировать/импортировать из/в dll ), но вроде, норм.
Плохой вариант — это function SendMail(p:tmailstruct):bool, потому что он непрозрачен. По факту он работает как ссылки (&) в крестах, только ещё неявнее: вызывающий код передаёт указатель вместо значения (паскалевский код в этом случае выделяет место в стеке: копирует в стек структуру, чтобы функция её не затёрла, а потом передаёт в функцию указатель на эту временную структуру, а после вызова чистит), а вызываемый неявно его разыменовывает.
По упомянутой причине некрасиво передавать массивы, объекты и прочие структурированные данные. А с указателями всё прозрачно.
Узнал новое для себя. Спасибо.
А если, допустим, функция принимает на вход какой-то объект - потомка класса, как быть? Это нехорошо?