Конвертор в Jpg

Тема в разделе "Delphi - Базы данных", создана пользователем NickProstoNick, 26 ноя 2008.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Доброго времени суток!
    Нужна помошь.
    Есть рукописная библиотека (писана в Delphi 7 ) которая конвертирует BMP в JPG... функция собственно очень простая... входные и выходные параметры - имя файла
    И все вроде бы работает и конвертится, но... только эту dll планируется использовать в lotus script... и вот тут возникают проблемы... :(
    функцию невозможно вызвать... приложение выдает ошибку и попросту закрывается.
    Есть ли каки-нить методы написания DLL для использования в разных языках?

    Ну и попутно еще вопрос/просьба... как можно получить доступ к страницам PDF-файла и сохранить их в JPG ? Желательно посмотреть на примеры
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а есть исходный текст библиотеки?

    какие именно ошибки?
    как происходит вызов из LS
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    вот декларация
    Код (Text):
    Declare Function ConvertToJPG Lib "D:\Bmp2Jpg.dll" ( FName As String, Compress As Integer, Gray As Boolean ) As String
    код DLL... писал правда в спешке....
    Код (Text):
    library Bmp2Jpg;

    uses
    JPEG, Graphics;
    {$R *.res}

    function StrReplace(const Str, Str1, Str2: string): string;
    // str - исходная строка
    // str1 - подстрока, подлежащая замене
    // str2 - заменяющая строка
    var
    P, L: Integer;
    begin
    Result := str;
    L := Length(Str1);
    repeat
    P := Pos(Str1, Result); // ищем подстроку
    if P > 0 then
    begin
    Delete(Result, P, L); // удаляем ее
    Insert(Str2, Result, P); // вставляем новую
    end;
    until P = 0;
    end;

    function ConvertToJPG( FName: string; Compress : integer; Gray : boolean):string;
    var
    JPEG: TJPEGImage;
    Bitmap: TBitmap;
    str : string;
    begin
    JPEG := TJPEGImage.Create;
    Bitmap := TBitmap.Create;
    try
    str := FName;
    Bitmap.LoadFromFile(FName);

    JPEG.Assign(Bitmap);
    jpeg.CompressionQuality := Compress;
    jpeg.Grayscale := Gray;

    jpeg.Compress;

    str := StrReplace( FName, 'bmp', 'jpg');
    jpeg.SaveToFile( str );
    Result := str;
    finally
    JPEG.Free;
    Bitmap.Free;
    end;
    end;

    exports
    ConvertToJPG;

    end.
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    попробуйте декларацию

    Declare Function ConvertToJPG Lib "D:\Bmp2Jpg.dll" ( Byval FName As String, Byval Compress As Integer, Byval Gray As Boolean ) As String

    ы. сама библиотека рабочая? тестировалась не на ЛС ?
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    да... библиотека рабочая... правда тестил в делфи

    так Declare Function ConvertToJPG Lib "D:\Bmp2Jpg.dll" ( Byval FName As String, Byval Compress As Integer, Byval Gray As Boolean ) As String
    уже пробовал :(
     
  6. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    не помню точно, но вот возвращаемое значение в String в DLL имеет нюансы ... при создании новой Длл в делфи это описано прямо в файле проекта
     
  7. etc

    etc Гость

    ГЫ, так конечно, ктож стринги в экспортных функциях юзает, так низя. :(
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Гы.... так даже без входныч параметров тоже не работает... вываливается вот с такой ошибкой
    error.JPG
     
  9. etc

    etc Гость

    А соглашение о вызовах соответствуют? Я понятия не имею как оно в лотус-скрипт ...

    PS: и отредактируйте уже наконец топик ;)
     
  10. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    string не только во входных, но и в ИСХодных
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    выходной параметр сделал Boolean
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    победил я проблему... правда частично... осталось искать в чем же всетаки бок.
    А дело вот в чем... оказалось в библиотеку передавалось искаженное значение переменной имени файла.
    причем не важно какого типа параметр. пришлось имя файла хардкодить.
     
  13. etc

    etc Гость

    Вы про "соглашение о вызовах" смотрели? Все там нормально?
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    вот такие вот параметры в функции
    ConvertToJPG( Fname: PChar; Compress: integer; Gray: Boolean ): Boolean; stdcall;

    так дкло в том, что не правильно передается имя не только из LS но и из Delphi
     
  15. etc

    etc Гость

    "stdcall" - почему именно так?
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    без stdcall - вылетает Лотус :)
    но с ним не передаются любые строковые данные :)
     
  17. etc

    etc Гость

    NickProstoNick Вы читаете о чем спрашивают ли как? кто вам говорил убрать? Вопрос - почему имменно этот а не другой?
     
  18. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    etc
    ну тогда встречный вопрос, почему другой а не этот?!
    И вообще я просил совета. Если есть предложения - с удовольствием выслушаю.

    И по сути, не нужено никакое соглашение... точнее оно бесполезно. Перебпробовал разные директивы - никакой разницы.
    При попытке воспользоваться данными из входящей переменной типа String или Pchar приложение Lotus просто "вываливается"
     
Загрузка...
Похожие Темы - Конвертор Jpg
  1. orehovdv
    Ответов:
    4
    Просмотров:
    1.516
  2. sum44
    Ответов:
    2
    Просмотров:
    2.861
  3. NickProstoNick
    Ответов:
    1
    Просмотров:
    2.330

Поделиться этой страницей