powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поясните за DLL :)
25 сообщений из 44, страница 1 из 2
Поясните за DLL :)
    #39723555
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7привет))

Хочу понять принцип создания процедуры длл.
Мне не понятно, где именно нужно объявлять переменные в длл. В самой строчке Procedure, или же в var...
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
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.
58.
59.
library BKF;

{  }

uses
  SysUtils,
  Classes, superobject, IdMultipartFormData, IdHTTP, Dialogs;

{$R *.res}


 procedure UPLOAD_VK(FilePath,VK_SERVER,VK_PHOTOS_LIST,VK_AID,VK_HASH:string; TS: TStringList;) stdcall; external 'BKF.dll'
  BEGIN
       if ID_ALBUM <> '' then
   begin
     {----------------------------------------ЗАГРУЗКА НА СЕРВЕР ВК---------------------------------}

     {------------------------------------ПОЛУЧАЕМ UPLOAD_URL..--------------------------------------------------------}
      Form1.SMEMO1.Clear;
        Response := send('GET','https://api.vk.com/method/photos.getUploadServer?album_id='+ ID_ALBUM  +'&'+token+'&v=5.87');
       Form1.sMemo1.Text := MyUtf8ToAnsi(Response);
       UPLOAD_URL :=  SO(Form1.sMemo1.Text).O['response'].S['upload_url'];
     {-----------------------------------------------------------------------------------------------------------------}


      {------------------------------------Multipartformdata---------------------------------------------}
      FormData := TIdMultiPartFormDataStream.Create;

      FormData.AddFile('file1',  Unit1.DEF_PATH_VK  , 'image/jpeg' );
      RESPONSE:= IDHTTP1.Post(UPLOAD_URL, FORMDATA);
      Form1.SMEMO1.Text := RESPONSE;
      FormData.Free;

       VK_SERVER := SO(Form1.smemo1.text).S['server'];
       VK_PHOTOS_LIST := SO(Form1.smemo1.text).S['photos_list'];
       VK_AID := SO(Form1.smemo1.text).S['aid'];
       VK_HASH := SO(Form1.smemo1.text).S['hash'];
     {-----------------------------------------------------------------------------------------------------------------}


        Form1.smemo1.Clear;
          Response := send('GET','https://api.vk.com/method/photos.save?album_id='+ ID_ALBUM +'&server=' +
          VK_SERVER + '&photos_list=' + VK_PHOTOS_LIST +'&hash=' + VK_HASH +'&' + token+'&v=5.87');
       Form1.sMemo1.Text := MyUtf8ToAnsi(Response);

         if FileExists(DEF_PATH_VK) then
      BEGIN
        DeleteFile(DEF_PATH_VK);
      END;

   end else
   BEGIN
     MessageBox(handle, PChar('НЕ ВЫБРАН АЛЬБОМ ДЛЯ ЗАГРУЗКИ В VK!!!'), PChar('СТРАШНЫЙ ERROR (:'), MB_OK + MB_ICONWARNING);
   END;

  END;

begin
end.


Или же мне нужна функция?
Речь о том, что бы в проекте сделать скрин, сохранить его, и вызвать процеду из длл, что бы она загрузила его в вк.
Никогда не работал с dll, обходил их как огонь))))) но для саморазвития должен попробовать!
Смотрел видео на ютубе, но там чисто поверхностно обговаривают... Остаются еще больше вопросов чем было.

В принципе, скриншот "(всегда)" будет лежать по пути "C:/" и удаляться сразу после загрузки на вк.
По этому, как я понимаю, пути к файлу передавать в библу не нужно. А только вызвать процедуру в нужный момент.
PS на form1.smemo1.text не обращайте внимания, я пытаюсь заменить её на TS: TStringList. Осталось узнать где это объявить)
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723564
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,
Tech N9neХочу понять принцип создания процедуры длл.
скачай книжку, там есть глава про dll и их написание
https://www.for-stydents.ru/informatika/delphi/uchebniki/delphi-5-rukovodstvo-razrabotchika-tom-1-osnovnye-metody-i-tehnologii-programmirovaniya.html
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723567
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neНикогда не работал с dll, обходил их как огонь))))) но для саморазвития должен попробовать!
Лучше забей.

Если таки не хочешь забить - начни с функции в dll попроще, например, которая складывает два числа.

Второй этап (после успешного первого) - сделай работающую функцию в dll, которая сохраняет результат этого сложения в файл, имя которого передается как параметр функции.

Последние 3 совета:
1. Ставь навсякий между "begin end." IsMultiThread := True;
2. Не используй в параметрах экспортируемых функций автоматические и сложные типы (String, дин. массивы, классы);
3. Во всех своих dll делай 2 доп. функции: Initialize и Finalize.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723592
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne7привет))

Хочу понять принцип создания процедуры длл.
Мне не понятно, где именно нужно объявлять переменные в длл. В самой строчке Procedure, или же в var...
Код: pascal
1.
2.
3.
library BKF;

{  }




Сленг радует :) код соответвует
Имеет смысл прочесть то, что в { } - там не глупости.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723593
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62Tech N9ne,
Tech N9neХочу понять принцип создания процедуры длл.
скачай книжку, там есть глава про dll и их написание
https://www.for-stydents.ru/informatika/delphi/uchebniki/delphi-5-rukovodstvo-razrabotchika-tom-1-osnovnye-metody-i-tehnologii-programmirovaniya.html
Посмотрел, там сразу про функции в библе.

YuRock,
Так как же я сделаю процедуру, если мне не объяснили где именно объявлять переменные, в строчке procedure (......) или же ниже в var?
и если в var, то что писать в самой процедуре?
Составьте пожалуйста мне заголовок процедуры, из моего заголовка. Там все переменные которые юзаются в коде.
Мне непонятен именно этот нюанс. Дальше я пойду пробовать с малых процедур, функций.
Я ведь не многого прошу?)))
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723596
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Tech N9ne7привет))

Хочу понять принцип создания процедуры длл.
Мне не понятно, где именно нужно объявлять переменные в длл. В самой строчке Procedure, или же в var...
Код: pascal
1.
2.
3.
library BKF;

{  }




Сленг радует :) код соответвует
Имеет смысл прочесть то, что в { } - там не глупости.
Я bad знаю англ)))
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723598
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

А зачем тебе external 'BKF.dll' в этой же DLL? И где секция export? Ну и string я бы на PChar заменил.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723603
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, там еще TStringList есть. Вообще хорошо.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723606
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И Form. Не взлетит в общем - все через одно место...
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723610
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

Form1 - это что? Форма из основной программы или созданная в dll?
ЗЫ: хотите понять принцип - начните с простого, как YuRock советовал.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723612
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterО, там еще TStringList есть. Вообще хорошо.
Ну видите, в книгах сразу описывается функции, но не пишут что для чего и как.
Мне нужно пол тонны прочитать, что бы вообще открывать delphi. Или пойти на программиста?
Как мне добыть инфу которая мне нужна, что бы реализовать свои нужды в ближайшее время?
Я понял что делаю что-то не так, почему бы не объяснить, почему нельзя юзать tstringlist, и на что его можно заменить?
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723618
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45Tech N9ne,

Form1 - это что? Форма из основной программы или созданная в dll?
ЗЫ: хотите понять принцип - начните с простого, как YuRock советовал.
это я в своей программе обращаюсь к memo1.
Код естественно вырезан с программы и вставлен в библу.
Задумка была такая, скинуть код в библу, заменить всё с form1.memo на tstringlist.
В самой библе не собираюсь делать формы.
Я повторюсь, как я пойду делать процедуры и функции, если я в принципе не знаю, где объявлять переменные!
В самой строчке PROCEDURE name(................. тут?)
var или тут?
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723623
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЯ bad знаю англ)))

Это нормально для АУЕ, не тот язык учил :)
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723626
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтож ладно, я зайду с другой стороны))
объясните как сделать функцию в библе, что бы в неё, программа передавала 3-4 стринга, и 1 stringlist
на выходе boolean
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723632
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЯ ведь не многого прошу?)))

Ты просишь разжовывать тебе азы. Это много. Очень много.

Tech N9neМне нужно пол тонны прочитать, что бы вообще открывать delphi. Или пойти
на программиста?
Да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723633
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neТак как же я сделаю процедуру, если мне не объяснили где именно объявлять переменные, в строчке procedure (......) или же ниже в var?
Там же, как и в обычных процедурах в основной программе. Синтаксис процедур для exe и dll не отличаются.

Tech N9neэто я в своей программе обращаюсь к memo1.
Код естественно вырезан с программы и вставлен в библу.
Это не естественно.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723636
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЧтож ладно, я зайду с другой стороны))
объясните как сделать функцию в библе, что бы в неё, программа передавала 3-4 стринга, и 1 stringlist
на выходе boolean

Если кратко - никак. В длл можно предать только числа и указатели ( тоже числа, по сути). Строки, объекты - нельзя.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723638
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockTech N9neТак как же я сделаю процедуру, если мне не объяснили где именно объявлять переменные, в строчке procedure (......) или же ниже в var?
Там же, как и в обычных процедурах в основной программе. Синтаксис процедур для exe и dll не отличаются.

Tech N9neэто я в своей программе обращаюсь к memo1.
Код естественно вырезан с программы и вставлен в библу.
Это не естественно.
Спасибо.
В dll во что мне загрузить ответ от сервера вк ?
На что заменить tstringlist?
Мне нужно отправить запрос, распарсить, отправить, опять парсить и тд.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723639
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neВ dll во что мне загрузить ответ от сервера вк ?В память.
Tech N9neНа что заменить tstringlist?На указатель на память.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723640
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно, что лучше - тот упоротый анонимус или вот такие топикстартеры.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723642
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockTech N9neВ dll во что мне загрузить ответ от сервера вк ?В память.
Tech N9neНа что заменить tstringlist?На указатель на память.
Спасибо!
И так же спасибо, что отличаешься от остальных тем, что не просто пишешь посты.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723647
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияНепонятно, что лучше - тот упоротый анонимус или вот такие топикстартеры.
Я думал тут можно задать вопрос, получить вменяемый ответ.
Я видать ошибся адресом? Тут хаха с тебя давят. Указывают на твои ошибки, но не говорят как она решается.
Лучше конечно такие как я, топикстартеры. Ведь можно поржать не только с нас, но еще и с кода.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723650
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЯ думал тут можно задать вопрос, получить вменяемый ответ.


Не люблю "крылатые" фразы, но здесь уместно: "правильно заданный вопрос содержит половину ответа".

Дорогой ТС, учи английский, а не феню!

Зачем длл понадобилась? Для выноса кода в длл нужна достаточно веская причина. Просто взять произвольную процедуру и вынести ее в длл - глупость.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723651
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neЧтож ладно, я зайду с другой стороны))
объясните как сделать функцию в библе, что бы в неё, программа передавала 3-4 стринга, и 1 stringlist
на выходе boolean
Используй интерфейсы.
...
Рейтинг: 0 / 0
Поясните за DLL :)
    #39723658
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо string -> widestring, вместо tstringlist -> IStringList(который может реализовать на базе TWideStringList)
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поясните за DLL :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]