Конференция "Базы" » Рисунок из БД в TImage [D5, MSSQL]
 
  • KirillRepin © (15.09.08 09:30) [0]
    Возникает проблема, при загрузки рисунка из БД в TImage загружается только черный фон и больше ничего. Что делать?

    Загрузка в БД:
    Query1.SQL.Clear;
    Query1.SQL.Text := 'exec Proc_AddImage @im=:im';
    Query1.ParamByName('im').LoadFromFile('C:\1.bmp', ftBlob);
    Query1.ExecSQL;

    загрузка рисунка из БД в TImage:
    var
     s:TMemoryStream;
    begin
     s:=TMemoryStream.Create;
     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Text := 'SELECT Pic_Name, Pic FROM Tab_Pictures WHERE Id_Pictures = 4';
     Query1.Open;
     (Query1.FieldByName('Pic') as TBlobField).SaveToStream(s);
     s.Position := 0;
     Image1.Picture.Bitmap.LoadFromStream(s);
     s.Free;
    end;
  • Johnmen © (15.09.08 09:57) [1]
  • KirillRepin © (15.09.08 10:03) [2]

    > Johnmen ©   (15.09.08 09:57) [1]
    >
    > http://pda.delphimaster.net/?id=1221223824&n=1

    да это повторение вопроса т.к. ответа там на него нет.
  • Ega23 © (15.09.08 10:13) [3]

    > ответа там на него нет.


    Ответа на него там есть. Дальше проверяй программу - что как и где ты грузишь в БД и как потом выгружаешь.
  • KirillRepin © (15.09.08 10:17) [4]
    Загружаю картинку, выгружается непонятно что. код программы приведен выше. если возможно подскажите где ошибка и как исправить т.к. с такой задачей сталкиваюсь впервые.
  • Ega23 © (15.09.08 10:22) [5]

    > если возможно подскажите где ошибка и как исправить


    Воспользоваться волшебными кнопками F5, F7 и F8
  • KirillRepin © (15.09.08 10:31) [6]
    прогнал программу в переменную s ничего вроде не записывается только почему не понял?
  • Ega23 © (15.09.08 10:33) [7]

    > прогнал программу в переменную s ничего вроде не записывается
    > только почему не понял?


    Учись отлаживать программу. Программист ты, или кто?
  • Плохиш © (15.09.08 10:43) [8]

    > KirillRepin ©   (15.09.08 10:03) [2]
    > да это повторение вопроса т.к. ответа там на него нет.

    Ответ есть в справке к методу LoadFromStream класса TPicture, последняя строчка.
  • KirillRepin © (15.09.08 11:15) [9]
    попробовал через DBImage тот же результат - черное поле.
    честно говоря уже голова кипит и несоображает что с этим делать?
  • KirillRepin © (15.09.08 11:19) [10]

    > Ответ есть в справке к методу LoadFromStream класса TPicture,
    >  последняя строчка.

    может справка кривая но у класса TPicture нет метода LoadFromStream
  • stas © (15.09.08 11:27) [11]
    KirillRepin ©   (15.09.08 11:19) [10]
    Сделай тоже самое через ADO.
  • Ega23 © (15.09.08 11:27) [12]
    Блин, ну попробуй ты сохранить его не в стрим, а в файл C:\2.bmp  и открыть его редактором.
  • KirillRepin © (15.09.08 11:46) [13]

    > попробуй ты сохранить его не в стрим, а в файл C:\2.bmp
    >  и открыть его редактором.

    сделал и открыл редактором. открылось только 3-5% рисунка с низу остальное все черное.

    код:
     Query3.Close;
     Query3.SQL.Clear;
     Query3.SQL.Text := 'SELECT Pic_Name, Pic FROM Tab_Pictures WHERE Id_Pictures = 4';
     Query3.Open;
     (Query3.FieldByName('Pic') as TBlobField).SaveToFile('C:\2.bmp');
  • Поросенок Винни-Пух © (15.09.08 11:51) [14]
    блоб незафетчен полностью
  • KirillRepin © (15.09.08 11:52) [15]

    > Поросенок Винни-Пух ©   (15.09.08 11:51) [14]
    >
    > блоб незафетчен полностью

    это как понять?
  • Поросенок Винни-Пух © (15.09.08 11:56) [16]
    это как понять?

    открылось только 3-5% рисунка
  • KirillRepin © (15.09.08 11:59) [17]

    > Поросенок Винни-Пух ©   (15.09.08 11:56) [16]
    >
    > это как понять?
    >
    > открылось только 3-5% рисунка

    а как с этим справится?
  • Ega23 © (15.09.08 12:00) [18]

    > сделал и открыл редактором. открылось только 3-5% рисунка
    > с низу остальное все черное.


    BDE Administrator - настойка твоего алиаса - BLOB SIZE поменяй с 32 на 999
  • Поросенок Винни-Пух © (15.09.08 12:01) [19]
    зафетчить блоб целиком
  • KirillRepin © (15.09.08 12:06) [20]

    >
    > BDE Administrator - настойка твоего алиаса - BLOB SIZE поменяй
    > с 32 на 999

    а если работать через АДО таких проблем не будет?
  • Ega23 © (15.09.08 12:22) [21]

    > а если работать через АДО таких проблем не будет?


    Я тебе, помнится, уже говорил, что BDE - древняя и устаревшая технология. Её использование в наше время может быть оправдано только в одном случае - поддержка древнего проекта, написанного для BDE.
    Для работы с MSSQL надо использовать ADO. Тем более, если проект "с нуля" начинается.
  • KirillRepin © (15.09.08 14:11) [22]
    Спасибо за информацию!
 
Конференция "Базы" » Рисунок из БД в TImage [D5, MSSQL]
Есть новые Нет новых   [134435   +35][b:0][p:0.001]