Avatar billede tjohan Nybegynder
11. september 2001 - 15:28 Der er 9 kommentarer og
1 løsning

Oversættelse fra C til VB

Hvem kan oversætte nedenstående kode skrevet i C til Visual basic

#include <stdio.h>
#include <stdlib.h>


/* topdf() - convert a HTML file to PDF */
FILE *topdf(const char *filename)    /* HTML file to convert */
{
  char    command[1024];            /* Command to execute */


  puts(\"Content-Type: application/pdf\\n\");

  sprintf(command, \"htmldoc -t pdf --webpage %s\", filename);

  return (popen(command, \"w\"));
}
Avatar billede sjh Nybegynder
11. september 2001 - 20:09 #1
Nu har jeg ikke forstan på C, men kunne du ikke forklar hvad programmet gør. ;)
Avatar billede tjohan Nybegynder
12. september 2001 - 18:13 #2
Jeg skal konvertere html-filer on-the-fly til PDF.
Dette kan gøres vhj. af Htmldoc se http://www.easysw.com/htmldoc/

funktionen modtager en html-fil der vhj. af et api-kald til HTMLDOC returnere en PDF-fil.

Jeg har selv arbejdet vidre på sagen ved at lave en asp-side der kalder en dll udarbejdet i WB:
<%@ Language=VBScript %>
<%
Response.Expires=0
Response.Buffer=true

Response.ContentType=\"application/pdf\"   
set html_pdf = Server.CreateObject(\"pdf_writer.pdf\")
varstream= html_pdf.hent_pdf(\"test.html\")
Response.BinaryWrite(varstream) \'***Dette fejler! sikkert fordi jeg ikke angiver længden på mit array i Dll\'en

set html_pdf = nothing
Response.end   

%>

DLL:

Public Function hent_pdf(ByVal filnavn As String) As Variant
 
    Dim filnr      As Long
    Dim binbyte()  As Byte
    Dim filstrr    As Long
 
    filnr = FreeFile
    Open \"htmldoc -t pdf --webpage \" + filnavn  For Binary Access Read As #filnr
       
    \'filstrr = FileLen(filnavn)
    \'ReDim binbyte(filstrr)
   
    Get #filnr, , binbyte
   
    Close #filnr
   
    hent_pdf = binbyte

End Function

Jeg støder på flg. problem
Hvordan finder jeg længden på  en Binary File?
Så den rette længde kan afsættes på arrayet!
Avatar billede jelzin101 Praktikant
12. september 2001 - 18:15 #3
prøv at bruge EOF.
Avatar billede tjohan Nybegynder
13. september 2001 - 13:46 #4
til jelzin101 (eller andre)

Mener du en iteration gennem filen hvor en var tælles op indtil EOF nåes?
I givet fald har du kodeeksempel der passer til ovenstående?
Avatar billede jelzin101 Praktikant
14. september 2001 - 17:26 #5
hvis du gider skrive det om til pseudokode så skal jeg nok skrive det :)
Avatar billede tjohan Nybegynder
18. september 2001 - 17:20 #6
Jeg har løst problemmet omkring længden på en binary fil ved, som du (jelzin101) anviste at benytte EOF. (se nedenstående kode-uddrag) Det er sikkert ikke den pæneste løsning men det virker;-)

Dim VarString  As String
    VarString = String(1, \" \")

Do While Not EOF(filnr)
        filstrr = filstrr + 1 \'*** længden på fil
        VarString = \" \"
        Get #filnr, , VarString
Loop
Avatar billede jelzin101 Praktikant
18. september 2001 - 20:37 #7
:0) - jeg ville heller ikke lave det meget pænere selv.
Avatar billede jelzin101 Praktikant
18. september 2001 - 20:37 #8
.
Avatar billede tjohan Nybegynder
19. september 2001 - 10:23 #9
Jeg takker for hjælpen:-)
Avatar billede jelzin101 Praktikant
19. september 2001 - 15:13 #10
tak for pts.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester