目前用的报表只支持varchar 类型的现实  谢谢高手

解决方案 »

  1.   

    function getstr(filename: string): pchar;
    var
        FFileHandle: THandle;
        FMapHandle: THandle;
        FFileSize: Integer;
        PData: pointer;
    begin
        FFileHandle := FileOpen(filename, fmOpenRead);
        FFileSize := GetFileSize(FFileHandle, nil);
        FMapHandle := CreateFileMapping(FFileHandle, nil, PAGE_READONLY, 0, FFileSize, nil);
        CloseHandle(FFileHandle);
        PData := MapViewOfFile(FMapHandle, FILE_MAP_READ, 0, 0, FFileSize); //映射文件视图
        SetLength(Result, FFileSize);
        Move(PData^, Result[1], FFileSize);
        UnmapViewOfFile(PData);
        CloseHandle(FMapHandle);
    end;可以把任何文件转换成varchar类型数据,如果以文本方式显示肯定是乱码。
    上边的代码你试试,可能有的地方不太准确,稍微修改一下就可以了。
      

  2.   

    用delphi 如何把数据库里的图片取出来放到自定的位置,
    放图片的表有三个字段
    staff_id 员工号
    staff_photo 二进制的图片
    staff_pic_name 图片的后缀名
      

  3.   

    图片转成字符,那编码成Base64吧
    然后显示的时候再解码出来
      

  4.   

    具体算法可直接用Indy里的TIdEncoderMIME组件,示例如下:
    function ToBase64: String;
    var
      Stream: TFileStream;
    begin
      Result := '';  if FileExists(FFileName) then
      begin
        Stream := TFileStream.Create(FileName , fmOpenRead);
        try
          Result := Trim(dmPDF.IdEncoderMIME.Encode(Stream));
        finally
          Stream.Free;
        end;
      end;
    end;
      

  5.   

    如果是C/S,可以用Tdbimage直接显示