Aktuelle Zeit: 16.07.2019 08:18

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Funktion in dll wird nicht gefunden (Callfunction)
BeitragVerfasst: 14.09.2004 17:03 
Offline
Benutzeravatar

Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Hi, ich soll für nen kollegen ein kleines Programm schreiben, mit dem man filme aus einzelbildern erstellen kann.
Eigentlich dank der Aviserv-DLL keine große sache, aber ich beiß mir die zähne dran aus.

Hier mal der gesamte Code

Code:
Structure AVI_INFO
  aviWidth.l
  aviHeight.l
  aviFirstFrame.l
  aviNumFrames.l
  aviFPS.b
  hwnd.l
EndStructure

Structure Movie
     pfad.s
     name.s
EndStructure


Enumeration
  #Lib
EndEnumeration

Global INF.AVI_INFO
NewList Frames.Movie()
If OpenLibrary(#Lib,"AVIserv.dll")=0
        MessageRequester("Test","nich geladen")
EndIf
Procedure BMP2AVI ()
  INF.AVI_INFO
    file.s = SaveFileRequester( "Save AVI", "", "AVI Video|*.avi", 0 )
    If GetExtensionPart(file)<>".avi"
        file=file+".avi"
    EndIf
            If CallFunction(#Lib,"AVI_Init")=0
                     MessageRequester("Fehler","Funktion nicht gefunden")
            EndIf
    FirstElement(Frames())
            hBmp = LoadImage(0, Frames()\pfad)
            If hBmp
              If INF\aviWidth <= 0
                INF\aviWidth  = ImageWidth()
                INF\aviHeight = ImageHeight()
                INF\aviFPS    = GetGadgetState(4)+1 ; Play 1 Frame per Second
                ;SetForegroundWindow_( INF\hwnd )
                If CallFunction( #Lib, "OpenAVIForWrite", file.s, @INF ) = #False : EndIf
              EndIf
           EndIf
    For b=2 To CountList(Frames())
            SelectElement(Frames(),b)
            hBmp = LoadImage(0, Frames()\pfad)
            If hBmp
             
              If INF\aviWidth + INF\aviHeight <> ImageWidth() + ImageHeight()
                hBmp = ResizeImage( 0, INF\aviWidth, INF\aviHeight )
              EndIf
             
              If INF\aviWidth           
                If CallFunction( #Lib, "AddFrameToAVI", hBmp, -1 ) = #True ; -1 Autoincrement FrameNr
                  Frames + 1
                EndIf
              EndIf
            EndIf
            Debug "Hallo"
      Next
      CallFunction( #Lib, "CloseAVIStreams" )
EndProcedure
quit=0
UseJPEGImageDecoder()
FirstElement(Frames())
INF\hwnd=OpenWindow(1,100,100,700,500,#PB_Window_SystemMenu,"Filmmacher")
             CreateGadgetList(INF\hwnd)
                  ListIconGadget(1,1,1,500,400,"Film",500,#PB_ListIcon_MultiSelect)
                  ButtonGadget(2,0,420,100,40,"Hinzufügen")
                  ButtonGadget(3,100,420,100,40,"Entfernen")
                  ComboBoxGadget(4,220,420,120,200)
                  SetGadgetState(1,1)
                  For a=0 To 26
                          AddGadgetItem(4,a,Str(a+1))
                  Next
                  SetGadgetState(4,25)
                  ButtonGadget(5,400,420,100,40,"Film erstellen")
                  Repeat
                           event=WaitWindowEvent()
                           If event=#PB_EventCloseWindow
                                   quit=1
                           EndIf
                           If event=#PB_EventGadget
                                  Select EventGadgetID()
                                       Case 1
                                               SelectElement(Frames(),GetGadgetState(1))
                                       Case 2
                                               name.s=OpenFileRequester("Bitte wählen sie die Bilder aus","","Bitmap und JPEG|*bmp;*jpg*",0,#PB_Requester_MultiSelection)
                                               HideGadget(1,1);Das bringt mehr speed
                                               While name
                                                        AddGadgetItem(1,GetGadgetState(1),GetFilePart(name))
                                                        AddElement(Frames())
                                                              Frames()\name=GetFilePart(name)
                                                              Frames()\pfad=name
                                                              name=NextSelectedFileName()
                                               Wend
                                               HideGadget(1,0)
                                        Case 3
                                               While GetGadgetState(1)>0
                                                        RemoveGadgetItem(1,GetGadgetState(1))
                                               Wend
                                       Case 5
                                              BMP2AVI()
                                  EndSelect
                           EndIf           
                  Until quit
End



Eigentlich sollte das so gehen (hmk, da sind wohl noch n paar sachen, die ich noch machen muss, aber egal).

auf jeden fall, mein Programm schafft es nicht,
Code:
                If CallFunction( #Lib, "OpenAVIForWrite", file.s, @INF ) = #False : EndIf

auszuführen, es findet die funktion nicht
die dll ist aber geladen und diese codestelle 1:1 aus dem beispiel kopiert,
wo es funktioniert

_________________
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Funktion in dll wird nicht gefunden (Callfunction)
BeitragVerfasst: 14.09.2004 17:29 
Offline
Benutzeravatar

Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Franky hat geschrieben:
Code:
If CallFunction( #Lib, "OpenAVIForWrite", file.s, @INF ) = #False : EndIf

Da stimmt ja auch wahrscheinlich was nicht. Die Bedingung ist sehr schön
Formuliert, aber was dann ist, ist nicht definiert. Da ich die DLL nicht habe,
kann ich nicht testen, aber ich würde vermuten, dass da ein Fehler liegt.

_________________
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 14.09.2004 17:36 
Offline
Benutzeravatar

Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Nöp, da hatte ich eine messagerquesterabfrage drin, hab die rausgenommen, weil das ganze sonst bei leuten, die vielleicht ohne debugger kompilen zur nutzung des taskmanagers führen kann, was ich etwas unschön finde, so beendet sich das programm einfach

_________________
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Funktion in dll wird nicht gefunden (Callfunction)
BeitragVerfasst: 14.09.2004 17:50 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Lars hat geschrieben:
Franky hat geschrieben:
Code:
If CallFunction( #Lib, "OpenAVIForWrite", file.s, @INF ) = #False : EndIf

... Da ich die DLL nicht habe,
kann ich nicht testen, aber ich würde vermuten, dass da ein Fehler liegt.


Das sollte wohl diese hier sein?

http://purebasic.myforums.net/viewtopic ... highlight=

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 14.09.2004 17:52 
Offline
Benutzeravatar

Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Joa :D


Sorry, is mir gerade mal aufgefallen, dass es die bei Purearea.net garnet gibt, dachte, da hätt ich die her, naja..... :oops:

_________________
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 14.09.2004 23:12 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
dll-aufrufe sin case-sensitiv !
Du solltest es also scho richtig schreiben :
OpenAVIforWrite

und nicht
OpenAVIForWrite


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye