Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поясните за DLL :) / 25 сообщений из 44, страница 1 из 2
26.10.2018, 14:54
    #39723555
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поясните за DLL :)
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
26.10.2018, 15:00
    #39723564
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поясните за DLL :)
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
26.10.2018, 15:09
    #39723567
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поясните за DLL :)
Tech N9neНикогда не работал с dll, обходил их как огонь))))) но для саморазвития должен попробовать!
Лучше забей.

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

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

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

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

{  }




Сленг радует :) код соответвует
Имеет смысл прочесть то, что в { } - там не глупости.
...
Рейтинг: 0 / 0
26.10.2018, 15:52
    #39723593
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поясните за DLL :)
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
26.10.2018, 15:54
    #39723596
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поясните за DLL :)
x1ca4064Tech N9ne7привет))

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

{  }




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

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

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

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

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

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

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

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

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

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


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

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

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


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