Ir para conteúdo
Fórum Script Brasil
  • 0

Vb P/ Delphi


Guest - pec -

Pergunta

Estou tentando transformar um codigo V.S.(asp.net) em delphi(asp.net), e estou encontrando essa dificuldade nesta linha:

&Array.Copy(pdfimage, pdfbuffer, size);

erro:[Error] WebForm1.pas(58): E2010 Incompatible types: 'Array' and 'Object'

esta declarada assim:

pdfimage:System.&Array;

também tentei assim:

pdfimage:System.Object;

mas também dá erro.

ps. já tentei sem o &. (pdfimage:System.Array;) dá o mesmo erro.

Estou trabalhando como add references, eu carrego a dll.

exemplo original em V.B

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim PDF ' PDF object

Dim Size As Long

Dim PDFImage As System.Array

' create pdf library object

PDF = CreateObject("PDFCreatorPilot2.piPDFDocument")

' initialize PDF Engine

PDF.StartEngine("demo@demo", "demo")

' set GenerateInMemoryFile generation flag to TRUE so keep PDF ' only in the memory

PDF.GenerateInMemoryFile = True

' start document generation

PDF.BeginDoc()

' draw "HELLO, PDF" message on the current PDF page

PDF.PDFPAGE_SetActiveFont("Verdana", True, False, False, False, 14, 0)

PDF.PDFPAGE_TextOut(10, 20, 0, "HELLO, PDF!")

' finalize document generation

PDF.EndDoc() ' clear the output stream

' get size of generated in-memory pdf file

Size = PDF.MemoryFileSize

' create new buffer with size equal to generated pdf file

Dim PDFBuffer(CInt(Size)) As Byte

' get in-memory pdf file as byte stream

PDFImage = PDF.BinaryImage

' copy byte stream into buffer

Array.Copy(PDFImage, PDFBuffer, Size)

' clear http output

Response.Clear()

' set the content type to PDF

Response.ContentType = "application/pdf"

' add content type header

Response.AddHeader("Content-Type", "application/pdf")

' set the content disposition

Response.AddHeader("Content-Disposition", "inline;filename=form.pdf")

' write the buffer with pdf file to the output

Response.BinaryWrite(PDFBuffer)

Response.End()

' disconnect from library

PDF = Nothing

End Sub

----------------------------------------------------------------------------

e com as alterações em delphi

procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);

var

pdf:PDFCreatorPilot2.IpiPDFDocument2;

size:integer;

pdfbuffer:byte;

pdfimage:System.&Array;

begin

// TODO: Put user code to initialize the page here

pdf:= PDFCreatorPilot2.piPDFDocumentClass.Create;

pdf.StartEngine('demo@demo', 'demo');

pdf.GenerateInMemoryFile:= true;

pdf.BeginDoc;

//pdf.PDFPAGE_SetActiveFont('times new roman', true, false, false, false, 14, 0);

pdf.PDFPAGE_TextOut(10, 20, 0, 'HELLO, PDF!');

pdf.EndDoc;

size:= pdf.MemoryFileSize;

pdfbuffer:= size;

pdfimage:= pdf.BinaryImage;

&Array.Copy(pdfimage, pdfbuffer, size);

response.Clear;

response.ContentType:= 'application/PDF';

Response.AddHeader('Content-Type', 'application/pdf');

Response.AddHeader('Content-Disposition', 'inline;filename=form.pdf');

response.BinaryWrite(pdfbuffer);

Response.&End;

end;

obrigado pela atenção de todos.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Não testei aqui, porque não tenho esse componente, mas "pdfbuffer" deveria ser um array de bytes (o que não é no caso do seu código em Delphi).

De qualquer maneira, o seu código em VB funciona? Se sim, nada impede que você crie a DLL com essa função em VB e utilize-a em Delphi normalmente (bastando referenciar a DLL). Esse é um dos recursos interessantes da plataforma .NET (poder criar bibliotecas em uma linguagem e utilizar em outra).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

caro Graymalkin;

obrigado pela sua resposta, o problema que eu não sei programar em vb, se fosse em delphi ficaria mais facil, não compreedo bem o codigo em vb p/ passar p/ delphi.

Esse é o componete que estou usando PDFCreatorPilot2 através do add reference como COM IMPORTS, se voce puder ajudar agradeço muito, pois já rodei a internet inteira atras de um componete que abra pdf sem que o usuario tenha o acrobat instalado, e só encontrei esse em vb, nada em delphi(uma pena).

o site desse componente é esse:

www.colorpilot.com

a dll : PDFCreatorPilot2.DLL

obrigado pela sua atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas, acredito que você não precise fazer muita coisa para utilizar aquele código original em VB, chamando ele pelo Delphi. A idéia seria pegar tudo aquilo que está no evento Page_Load e colocar em uma rotina separada de uma classe. Daí, compilar essa classe para uma DLL e referenciar esta no seu projeto em Delphi. Desta maneira, você chamaria essa rotina da DLL criada e ela chamaria o tal componente que cria o PDF. Entendeu? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...