ComLib_PB4 mit PB 4.20 (beta 2)
Du meinst den TagKnecht ?
-> den benutze ich so wie gepostet
Im Hauptprog siehts dann so aus:
SCtr_AddCode(TagKnecht(VollerDateiname,"Read","","","","","",""))
FileTitel.s=SCtr_EvalStr("Titel")
--> VollerDateiname wird zuvor natürlich noch "befüllt".
Btw:
Den TailBite habe ich schon bemüht (ScriptControl neu kompiliert)
-> leider immer noch "Memory access error...."
Gruß
Bernd
-> den benutze ich so wie gepostet
Im Hauptprog siehts dann so aus:
SCtr_AddCode(TagKnecht(VollerDateiname,"Read","","","","","",""))
FileTitel.s=SCtr_EvalStr("Titel")
--> VollerDateiname wird zuvor natürlich noch "befüllt".
Btw:
Den TailBite habe ich schon bemüht (ScriptControl neu kompiliert)
-> leider immer noch "Memory access error...."
Gruß
Bernd
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Vielleicht sollte der NightKnecht doch einen String zurückgeben, der mehr als "" enthält
Momentan gibt die Procedure nur nen leerstring zurück, leeres Skript macht
im allgemeinen nicht viel
Momentan gibt die Procedure nur nen leerstring zurück, leeres Skript macht
im allgemeinen nicht viel
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
was soll ich denn sonst meinen, wenn Du nur diese eine Proc gepostet hast?PurePi hat geschrieben:Du meinst den TagKnecht ?
na, dann haben wir den Fehler ja schon gefundenPurePi hat geschrieben:-> den benutze ich so wie gepostet
Grüße ... Kiffi
// Edit: In Deinem Ursprungsposting ist es nicht viel besser
PurePi hat geschrieben:Code: Alles auswählen
Procedure.s MyVBS() VBS$ + "MyVar =" + Chr(34) +"Hallo"+ Chr(34) + #CRLF$ ProcedureReturn EndProcedure
Hygge
?? Verwirrung ??
Was soll denn aus der Procedure TagKnecht zurückgegeben werden ??(innerhalb der Procedure läuft doch nur VBS ab)
NACH Rückkehr wird doch erst mit z.B "FileTitel.s=SCtr_EvalStr("Titel")"
die VBS Variable einer PB Variablen zugewiesen.
Das ganze geht ja auch wunderbar solange folgende ich SCtr_EvalStr(...) nicht aus einer weiteren Procedure aufrufe (s. mein 1. Posting)
Und wie schon gesagt, mit PB 4.0 liefs bisher ohne Probleme
Bernd
Was soll denn aus der Procedure TagKnecht zurückgegeben werden ??(innerhalb der Procedure läuft doch nur VBS ab)
NACH Rückkehr wird doch erst mit z.B "FileTitel.s=SCtr_EvalStr("Titel")"
die VBS Variable einer PB Variablen zugewiesen.
Das ganze geht ja auch wunderbar solange folgende ich SCtr_EvalStr(...) nicht aus einer weiteren Procedure aufrufe (s. mein 1. Posting)
Und wie schon gesagt, mit PB 4.0 liefs bisher ohne Probleme
Bernd
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> Und wie schon gesagt, mit PB 4.0 liefs bisher ohne Probleme
möchte ich mal bezweifeln.
Die Procedure setzt doch das Skript zusammen. Das Ergebnis der Procedure
ist das Skript in einem String, welches dann ausgeführt werden kann. Du
setzt den String zwar zusammen aber er verläßt niemals die Procedure
möchte ich mal bezweifeln.
Die Procedure setzt doch das Skript zusammen. Das Ergebnis der Procedure
ist das Skript in einem String, welches dann ausgeführt werden kann. Du
setzt den String zwar zusammen aber er verläßt niemals die Procedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
[grübel] ... es sei denn, er hat VBS$ irgendwo global deklariert.ts-soft hat geschrieben:>> Und wie schon gesagt, mit PB 4.0 liefs bisher ohne Probleme
möchte ich mal bezweifeln.
Dann könnte es geklappt haben.
@PurePi: Wie Thomas schon schrieb:
Code: Alles auswählen
ProcedureReturn VBS$
Grüße ... Kiffi
Hygge
Ne, Globale Deklaration ist und war nicht.
Um nochmal bei meinen simplem Beispiel zu bleiben:
Dann müßte es ja so laufen:
(tut aber nicht)
Global VBS$
SCtr_SetLanguage("VBScript")
SCtr_SetTimeOut(10000)
Procedure.s MyVBS()
VBS$ + "MyVar =" + Chr(34) +"Hallo"+ Chr(34) + #CRLF$
ProcedureReturn VBS$
EndProcedure
; Nach wie vor: die auskommentierten Zeilen gehen !
; folgende Aufrufe funkt. hier (aus dem Hauptprogramm) einwandfrei
; SCtr_AddCode(MyVBS())
; pbMyVar.s=SCtr_EvalStr("MyVar")
; !! Das geht NICHT (unter 4.20)
Procedure GetMyVar()
SCtr_AddCode(MyVBS())
pbMyVar.s=SCtr_EvalStr("MyVar")
EndProcedure
; Erfolgt der Aufruf aus einer Procedure gibt's "Invalid memory access.(read error at adress 0)"
GetMyVar()
Um nochmal bei meinen simplem Beispiel zu bleiben:
Dann müßte es ja so laufen:
(tut aber nicht)
Global VBS$
SCtr_SetLanguage("VBScript")
SCtr_SetTimeOut(10000)
Procedure.s MyVBS()
VBS$ + "MyVar =" + Chr(34) +"Hallo"+ Chr(34) + #CRLF$
ProcedureReturn VBS$
EndProcedure
; Nach wie vor: die auskommentierten Zeilen gehen !
; folgende Aufrufe funkt. hier (aus dem Hauptprogramm) einwandfrei
; SCtr_AddCode(MyVBS())
; pbMyVar.s=SCtr_EvalStr("MyVar")
; !! Das geht NICHT (unter 4.20)
Procedure GetMyVar()
SCtr_AddCode(MyVBS())
pbMyVar.s=SCtr_EvalStr("MyVar")
EndProcedure
; Erfolgt der Aufruf aus einer Procedure gibt's "Invalid memory access.(read error at adress 0)"
GetMyVar()
Hallo PurePi,
1.) Das 'Global VBS$' ist da totaler Käse. Am besten weg damit. Die
Funktion MyVBS() musst lediglich VBS$ zurückgeben, dann ist alles in
Butter.
2.) Es ist nicht auszuschliessen, dass die ScriptControl-Lib -- so wie sie ist --
nicht mehr korrekt unter PB4.2x läuft. Solange Du (oder sonstwer) sie
nicht neu kompiliert, ist es müßig, nach vermeintlichen Fehlern zu suchen.
3.) Was spricht dagegen, den PureDispHelper zu verwenden? Das von
Thomas gepostete Beispiel funktioniert doch.
4.) Bitte Code-Tags verwenden (und nicht immer den Code grün einfärben)
Grüße ... Kiffi
1.) Das 'Global VBS$' ist da totaler Käse. Am besten weg damit. Die
Funktion MyVBS() musst lediglich VBS$ zurückgeben, dann ist alles in
Butter.
2.) Es ist nicht auszuschliessen, dass die ScriptControl-Lib -- so wie sie ist --
nicht mehr korrekt unter PB4.2x läuft. Solange Du (oder sonstwer) sie
nicht neu kompiliert, ist es müßig, nach vermeintlichen Fehlern zu suchen.
3.) Was spricht dagegen, den PureDispHelper zu verwenden? Das von
Thomas gepostete Beispiel funktioniert doch.
4.) Bitte Code-Tags verwenden (und nicht immer den Code grün einfärben)
Grüße ... Kiffi
Hygge
Moin Kiffi,
besten Dank für deine Infos.
Das neu kompilieren hat aber nicht geholfen
Aber ich glaube schon, das die Memoryverwaltung (oder was auch immer) in 4.20 anders ist. Wie bereits gepostet: die ReadFunctions der JHRegistry_420 LIB (wie der Name sagt - für 4.20) haben selbiges Problem
Leider kriege es nicht hin, diese entsprechend umzubauen
Ich poste mal meinen Versuch, evtl. kann mir ja mal jemand Hilfe geben:
Es ist für mich unklar, was innerhalb der Procedure GetTag abzulaufen hat, und was hinterher mit dhGetValue() "abzugreifen" ist.
Grüsse
Bernd
besten Dank für deine Infos.
ist schon klar das es überflüssig wie`n Kropf ist, wollte nur zeigen dass es mit "Global" genausowenig geht.'Global VBS$'...
Unter 4.20 neu kompiliert hatte ich bereits (mit neuester TailBilte), hatte ich weiter oben auch schon mal gepostet...Solange Du (oder sonstwer) sie nicht neu kompiliert,...
Das neu kompilieren hat aber nicht geholfen
Aber ich glaube schon, das die Memoryverwaltung (oder was auch immer) in 4.20 anders ist. Wie bereits gepostet: die ReadFunctions der JHRegistry_420 LIB (wie der Name sagt - für 4.20) haben selbiges Problem
jo, das geht gut.... das von Thomas gepostete Beispiel...
Leider kriege es nicht hin, diese entsprechend umzubauen
Ich poste mal meinen Versuch, evtl. kann mir ja mal jemand Hilfe geben:
Es ist für mich unklar, was innerhalb der Procedure GetTag abzulaufen hat, und was hinterher mit dhGetValue() "abzugreifen" ist.
Grüsse
Bernd
Code: Alles auswählen
EnableExplicit
Procedure.s GetTags(File$)
Protected Script$
; Object klar machen
Script$ = "Set oWMP = CreateObject(" + Chr(34) + "wmPlayer.ocx" + Chr(34) + ") " + #CRLF$
Script$ + "Set oMedia = oWMP.newMedia("+Chr(34)+File$+ Chr(34)+")" + #CRLF$
;Read
;Script$ + "Bitrate=oMedia.GetIteminfo(" + Chr(34) + "Bitrate"+ Chr(34) + ") " + #CRLF$
ProcedureReturn Script$
EndProcedure
dhToggleExceptions(#True)
Define.l Result, obj = dhCreateObject("MSScriptControl.ScriptControl")
Define.s Script
If obj
dhPutValue(obj, "Language = %T", @"VBScript")
dhGetValue("%T", @Result, obj, "Language")
If Result
Debug "Language: " + PeekS(Result)
dhFreeString(Result) : Result = 0
EndIf
dhPutValue(obj, "TimeOut = %d", 20000)
dhGetValue("%d", @Result, obj, "TimeOut")
Debug "TimeOut: " + Str(Result) + " ms"
Script = GetTags("c:\test\All Saints - Black Coffee.mp3")
dhCallMethod(obj, "AddCode(%T)", @Script)
; -> bis hierin OK, aber dann....
dhGetValue("%T", @Result, obj, "GetIteminfo(%T)", @"Bitrate")
;--> dhGetValue... geht schon nicht mehr "object doesn`t support..."
; ---> was mach ich denn da verkehrt ?
If Result
MessageRequester("Bitrate:", PeekS(Result), #MB_ICONINFORMATION)
dhFreeString(Result) : Result = 0
EndIf
dhReleaseObject(obj) : obj = 0
EndIf
S O L V E D !
OK: Augen auf, Verstand einschalten - und schon wird alles gut...
Werde dann mal auf DispHelper umstellen (damit geht das ganze auch aus einer Procedure).
Bzgl. ScriptControl: Die scheint ohne Änderungen nicht unter 4.20 zu funktionieren. Wenn jemand die Anpassungen vornehmen kann /will (mein Know How reicht dafür leider nicht), würde ich für Tests gern zur Verfügung stehen.
Gruß
Bernd
Code: Alles auswählen
dhGetValue("%T", @Result, obj, "GetIteminfo(%T)", @"Bitrate")
--> Unfug
dhGetValue("%T", @Result, obj, "eval(%T)", @"Bitrate")
--> so ist`s recht
Werde dann mal auf DispHelper umstellen (damit geht das ganze auch aus einer Procedure).
Bzgl. ScriptControl: Die scheint ohne Änderungen nicht unter 4.20 zu funktionieren. Wenn jemand die Anpassungen vornehmen kann /will (mein Know How reicht dafür leider nicht), würde ich für Tests gern zur Verfügung stehen.
Gruß
Bernd