Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Импорт DLL в Visual Basic... (помогите плз.) Добавлено: 14.02.08 17:10  

Автор вопроса:  Harter
Помогите мне "очень начинающему" програмисту, я делаю свой проект в котором нужно сохронять параметры в .ini файл, мой друг согласился написать .dll на Дельфе, КАК МНЕ ИМПОРТИРОВАТЬ ЭТУ ДЛЛ В VB???
_________________________________________________________
Я делаю прикольный Текстовый редактор...

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 14.02.08 17:16
Если в этом текстовом редакторе есть dll на Delphi, то он уже автоматически перестает быть прикольным

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 14.02.08 23:34
А какая связь между "сохронять параметры в .ini файл" и "мой друг согласился написать .dll на Дельфе"
з.ы. возможно Sharp пояснит, чем плох Дельфи? Я просто о нем ничего практически не знаю, кроме того, что многие его ненавидят=)

Ответить

Номер ответа: 3
Автор ответа:
 Harter



Вопросов: 32
Ответов: 167
 Профиль | | #3 Добавлено: 14.02.08 23:40
А какая разница где будет написана .dll в БЕЙСИКЕ в С++ или на Дельфе???
Я думал что .dll он(о) и в Африке .dll :)

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 14.02.08 23:44
Хм, ну как и любые другие функции из системных DLL - просто продекларировать нужно функцию.
 Можно в принципе на делфи делать ActiveX DLL, тогда в VB её можно будет подключить, как и любой другой компоент - через references.
Также на этом сайте, пример от sne, вызов функции по имени. Там функция импортируется из dll через LoadLibrary, и вызываетя через GetProcAddres...

Ответить

Номер ответа: 5
Автор ответа:
 Harter



Вопросов: 32
Ответов: 167
 Профиль | | #5 Добавлено: 14.02.08 23:47
Польшое при большое спасибо!!! =)
Я кстати ещё одну тему сейчас создам...
(всё таже)

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 14.02.08 23:47
А какая разница где будет написана .dll в БЕЙСИКЕ в С++ или на Дельфе???
Разница в типе DLL (ActiveX or native) и разница в передачи параметров фунции (stdcall or pascal). Вообщем есть разница :\

Ответить

Номер ответа: 7
Автор ответа:
 Harter



Вопросов: 32
Ответов: 167
 Профиль | | #7 Добавлено: 14.02.08 23:48
Я просто с .длл не работал вообще :(

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 15.02.08 02:49
возможно Sharp пояснит, чем плох Дельфи?

Всем

Ответить

Номер ответа: 9
Автор ответа:
 Harter



Вопросов: 32
Ответов: 167
 Профиль | | #9 Добавлено: 15.02.08 02:50
Мда, ответ содержательный, назови его недостатки(хотя-бы)

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 15.02.08 03:31
Delphi это мертворожденное существо компании, в бывшем конкурирующей с Microsoft в определенной нише.
Этими двумя фактами она уже плоха.

ПО сути - ini-файлы давно устарели я бы советовал использовать xml, и работать с ним можно без проблем из VB6/VB .NET (без дополнительных библиотек или с дополнительными библиотеками, смотря какую версию VB .NET будешь использовать).

Вот кстати аргумент в пользу VB .NET 9.0
        Dim Settings = _
            <Settings>
                <Width><%= Me.Size.ToString %></Width>
                <Location><%= Me.Location.ToString %></Location>
            </Settings>

Ответить

Номер ответа: 11
Автор ответа:
 Harter



Вопросов: 32
Ответов: 167
 Профиль | | #11 Добавлено: 15.02.08 03:33
я програмирую на ВБ 6 ! ! !

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 15.02.08 06:20
я програмирую на ВБ 6 ! ! !

Наши соболезнования

Ответить

Номер ответа: 13
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 15.02.08 11:39
VB6 рулит =)

Ответить

Номер ответа: 14
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #14
Добавлено: 15.02.08 11:59
<ukr>Odnoznachno</ukr>

Ответить

Номер ответа: 15
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #15 Добавлено: 16.02.08 00:19
КАК МНЕ ИМПОРТИРОВАТЬ ЭТУ ДЛЛ В VB???


 процедуры и функции этой длл нужно вызывать также, как и API

вот например длл на делфи:

Library Project2;



uses
  windows,
  Classes,
  SysUtils,
  ;Dialogs,
  Graphics;

{$R *.res}
  function bmptosepia(const bmp: TBitmap; depth: Integer): Boolean;
var
color,color2:longint;
r,g,b,rr,gg:byte;
h,w:integer;
begin
  for h := 0 to bmp.height do
  begin
    for w := 0 to bmp.width do
    begin
//first convert the bitmap to greyscale
    color:=colortorgb(bmp.Canvas.pixels[w,h]);
    r:=getrvalue(color);
    g:=getgvalue(color);
    b:=getbvalue(color);
    color2:=(r+g+b) div 3;
    bmp.canvas.Pixels[w,h]:=RGB(color2,color2,color2);
//then convert it to sepia
    color:=colortorgb(bmp.Canvas.pixels[w,h]);
    r:=getrvalue(color);
    g:=getgvalue(color);
    b:=getbvalue(color);
    rr:=r+(depth*2);
    gg:=g+depth;
    if rr <= ((depth*2)-1) then
    rr:=255;
    if gg <= (depth-1) then
    gg:=255;
    bmp.canvas.Pixels[w,h]:=RGB(rr,gg,b);
    end;
  end;
end;

Function ShowImageInDelphi(Himg:Int64):Int64 export; Stdcall;
var
img : TBitmap;
 Col1Pixel : String;

begin

 img := TBitmap.Create;
 Img.Handle := Himg;
 Col1Pixel := IntToStr(colortorgb(Img.Canvas.pixels[0,0]));
 Showmessage('HEIGHT: ' + IntToStr(Img.Height) + ' ' + 'Width: ' + IntToStr(Img.Width ) + ' First pixel color: ' + Col1Pixel );
 bmptosepia(Img, 20);
 ShowImageInDelphi := Img.Handle ;

End;

exports
ShowImageInDelphi name 'ShowImageInDelphi';

begin
end.



ShowImageInDelphi - это экспортируемая функция. Она конвертирует изображение, производя эффект "старое фото" или "песок". Так как кроме строк и номеров передавать ничего не рекомендуется, будем передавать указатель.

на vb7 примерно так:

Declare Ansi Function ShowImageInDelphi Lib "Project2.dll" (ByVal h As Integer) As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
        If IsNothing(imgFirst) Then Exit Sub
        Dim Origin As Drawing.Bitmap = imgFirst
        Dim HandleSend As Integer, HandleReceive As Integer
        Dim sysPTRin As System.IntPtr = Origin.GetHbitmap()
        Dim sysPTRout As System.IntPtr
        HandleSend = sysPTRin.ToInt64()
        HandleReceive = ShowImageInDelphi(HandleSend)
        sysPTRout = IntPtr.op_Explicit(HandleReceive)
        Dim dest As Drawing.Bitmap
        dest = dest.FromHbitmap(sysPTRout)
        Me.PictureBox2.Image = dest
        Me.PictureBox1.Update()
        Me.Validate()
    End Sub


естесственно если твой знакомый сделал либу на Delphi2006 c .NET, то вызывать нужно как обычную НЕТовскую сборку

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам