Seite 2 von 7
Re: ReadProgramString
Verfasst: 26.10.2022 14:32
von dibro
Hi Axolotl,
danke, ich werde dein Tool mal probieren.
Das Exiftool gibts auf der Seite
https://exiftool.org , ist Open souce und in Perl geschrieben.
Ich brauche es, weil ich an das DateCreated mit Pb nicht drankomme und schiebe das Datum in die unter Windows zugänglichen Formate.
Erst mal vielen Dank, ich melde mich wieder.
Dieter
Re: ReadProgramString
Verfasst: 26.10.2022 15:16
von Axolotl
Also Tool ist vielleicht ein bisschen hochgegriffen.
Man kann LogToFile(Message$) anstelle eines MessageReguesters("Debug", Message$) verwenden.
Auf jeden Fall würde ich mal for Zeile 61 (siehe Code) den Wert der Variablen 'ExifTool_Pfad$' anschauen.
Program müsste ja auch ZERO sein....
Code: Alles auswählen
; ... schnipp
MessageReguesters("Debug", "ExifTool = '" + ExifTool_Pfad$ + "'")
;LogToFile("ExifTool = '" + ExifTool_Pfad$ + "'")
Program = RunProgram(ExifTool_Pfad$, Pfad$, Arbeitsverzeichnis$, Flags)
; ... schnapp
Ansonsten würde ich mal bei den Flags das #PB_Program_Hide wegnehmen (nur um das Console fenster zu sehen, wärend der tests)
So, mehr fällt mir jetzt spontan nicht dazu ein.
Re: ReadProgramString
Verfasst: 26.10.2022 15:57
von dibro
...ich hatte den Messagerequester in Zeile 61,62,63 platziert. Meldung kommt nur in Zeile 61, dann überspringt er alles bis Zeile 96.
Der Dateiname Exiftool.exe wird nicht übernommen. Starte ich im Editor, ist alles da und läuft. ---> Ratlos
Ich habe vor über 10 Jahren das letzte Mal programmiert und wollte jetzt auf die Schnelle ein Prpg bauen, das die Zeiten verschiedener Videos deren Kameras nicht ordentlich eingestellt waren, in die Reihe bringen.
Re: ReadProgramString
Verfasst: 26.10.2022 17:32
von Axolotl
Dann wird die RunProgram() Procedure nicht richtig ausgeführt, dh. Variable Program is 0.
Meine Vermutung um den Fehler einzukreisen....
in Variable ExifTool_Pfad$ steht nicht der richtige pfad auf das exiftool drin?
Z.B.: ohne Pfadangabe hängt die ganze Sache vom aktuellen Arbeitsverzeichnis ab?
Leider stocher ich ein bisschen im Nebel,
Hilfreich wäre: Was sind die Werte der Variablen rund um RunProgram()
insbesondere ExifTool_Pfad$
D.h. wie lautet der komplete Pfad zum exiftool.exe
Wo unterscheiden sich die Werte bei der Debug- und bei der Release-Version?
Re: ReadProgramString
Verfasst: 26.10.2022 17:33
von juergenkulow
Code: Alles auswählen
; Programm läuft mit Compiler Executable erstellen, löst aber eine Fehlermeldung in der IDE aus.
RunProgram("notepad.exe","","",#PB_Program_Wait | #PB_Program_Open | #PB_Program_Read| #PB_Program_Error)
; [16:34:28] [ERROR] startedit.pb (Zeile: 2)
; [16:34:28] [ERROR] RunProgram(): Ungültige Flags: Kann nicht #PB_Program_Wait mit den Kommunikations-Flags kombinieren.
Brauchst Du wirklich #PB_Program_Wait?
Wann kann ExifName$ ="" sein und warum mag das RunProgram nicht?
Re: ReadProgramString
Verfasst: 26.10.2022 17:39
von Axolotl
Ja, die Frage stellt sich mir auch gerade...
Bei mir stürtzt das Program mit #PB_Program_Wait in den Flags ab.
Re: ReadProgramString
Verfasst: 26.10.2022 19:15
von dibro
Bei mir macht es keinen Unterschied, ob mit oder ohne #PB_Program_Hide. In beiden Fällen wird der Pfad nicht richtig übergeben.
Im Editor geht kurz das Fenster auf oder auch nicht, und das Programm läuft - die .exe nicht
ich habe die Zeilen beim "Case Exif_Button" nochmal ergänzt. In der IDE/Compilerversion wird Datei$="Exiftool.exe" richtig übergeben
In der compilierten exe ist im MessageRequester die Stelle leer und es wird nichts übergeben, sodass die Prozedur das Exiftool nicht startet und mit dem Fehler endet.
Kann das am Compiler liegen oder an irgendwelchen Parametern zum Compiler?
Es geht auch nicht, wenn ich vorher den aus der INI übernommenen Pfad neu wähle.
Wenn ich noch Haare hätte, würde ich mir die raufen
Ab Zeile 283 geändert
Code: Alles auswählen
Case #Exif_Button
If GetGadgetState(#Combogadget_Datei) = 0 : Datei$ = "G*.MP4" : EndIf
If GetGadgetState(#Combogadget_Datei) = 1 : Datei$ = "*.MP4" : EndIf
If GetGadgetState(#Combogadget_Datei) = 2 : Datei$ = "*.MOV" : EndIf
ClearGadgetItems(#Exif_Text)
Pfad_File$ = Option$+Arbeitsverzeichnis$+Datei$
ExifTool_Pfad$ = ExifPfad$ + ExifName$
MessageRequester("Exif_Pfad_File ",ExifTool_Pfad$+" "+Pfad_File$)
ExifRun(ExifTool_Pfad$, Pfad_File$, Arbeitsverzeichnis$, Flags)
AddGadgetItem(#Exif_Text,-1,Ausgabetext$+#NewLine)
EndSelect
Außerdem, warum löscht ClearGadgetItems(#Exif_Text) den Text nur teilweise --> Rudi Ratlos

Aber vielen Dank für die bisherige Unterstützung.
Dieter
Re: ReadProgramString
Verfasst: 26.10.2022 19:39
von dibro
E S L Ä U F T
Ich habe nochmal geändert:
Code: Alles auswählen
Case #Exif_Button
If GetGadgetState(#Combogadget_Datei) = 0 : Datei$ = "G*.MP4" : EndIf
If GetGadgetState(#Combogadget_Datei) = 1 : Datei$ = "*.MP4" : EndIf
If GetGadgetState(#Combogadget_Datei) = 2 : Datei$ = "*.MOV" : EndIf
ClearGadgetItems(#Exif_Text)
Pfad_File$ = Option$+Arbeitsverzeichnis$+Datei$
ExifTool_Pfad$ = ExifPfad$ + "Exiftool.exe"
ExifRun(ExifTool_Pfad$, Pfad_File$, Arbeitsverzeichnis$, Flags)
AddGadgetItem(#Exif_Text,-1,Ausgabetext$+#NewLine)
EndSelect
Außerdem aus den Flags #PB_Program_Wait herausgenommen und siehe da: es läuft, warum auch immer

Alles gut jetzt, prima Forum
Viele Grüße
Dieter
Re: ReadProgramString
Verfasst: 27.10.2022 16:31
von dibro
Hi zusammen,
da bin ich nochmal.
Erstens hatte ich mich zu früh gefreut. Die compilierte EXE zeigte ein seltsames Verhalten. Mal ging es mal nicht. Das Exiftool machte eine Menge Fehlermeldungen und auch der Teil der das Filedatum manipulierte, macht was er nicht sollte
Bis da eine Meldung von einem Herrn Norton kam. Ich hatte vorher Bullguard drauf und damit keinen Ärger. Norton hat Bullguard keschluckt und ich hatte plötzlich Norton auf dem Rechner - und den Ärger. Ich habe den Scheiß deinstalliert und siehe, fortan keine Probleme mehr. Mag sein, dass die Konflikte mit Norton daher stammen, dass ich den Code, die exe und die Beispieldateien auf einem Stick gespeichert habe und Norton das als Bedrohung von außen interpretierte.
Jetzt mache ich mich auf, den Code in eine vernünftige Form zu bringen, so ohne Global usw.
Viele Grüße an das Forum
Dieter
Re: ReadProgramString
Verfasst: 29.10.2022 16:44
von dibro
Hi,
ich habe das lauffähige Tool weiter vorne aktualisiert.
viewtopic.php?p=363063#p363063
Das Problem, dass das Editorgadget nicht sofort gelöscht wird, besteht weiterhin.
An dem Code kann es m.E. nicht liegen.
Ich habe ein kleines Beispiel eingefügt, bei dem der identische Code läuft. Vielleicht kann sich das jemand mit mehr Ahnung als ich mal beim vorstehenden Programm ansehen.
Hier das Example das läuft:
Code: Alles auswählen
#NewLine=#CRLF$
If OpenWindow(0,100,100,200,500,"Editorgadget Löschversuch",#PB_Window_SystemMenu )
EditorGadget(1,5,5,190,400, #PB_Editor_ReadOnly)
ButtonGadget(2,10,450,50,30,"Start")
ButtonGadget(3,75,450,50,30,"lösch")
ButtonGadget(4,140,450,50,30,"Ende")
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2
For i = 0 To 50
SetGadgetItemText(1,i,"Das ist ein Text "+ i+ Chr(13)+Chr(10) )
Ausgabetext$ =" Das ExifTool von von Phil Harvey muss auf dem Rechner installiert sein " + #NewLine +
" ------------------------------------------" + #NewLine +
" 1. Pfade setzen " + Chr(13)+Chr(10) +
" 2. Dateiart wählen " + #NewLine +
" 3. ExifTool starten " + #NewLine +
" 4. Zeitänderung wählen " + #NewLine +
" 5. Zeit starten " + #NewLine +
" 6. Freuen " + #NewLine +
"------------------------------------------" + #NewLine +
" Das Programm speichert die aktuellen Einstellungen in einer MEXDatum.ini " + #NewLine +
" Die Funktionen Start und ExifTool können mehrfach aufgerufen werden " + #NewLine +
" Der Button ExifTool setzt die Zeitänderungen wieder zurück "
Next
SetGadgetItemText(1,i,Ausgabetext$+ i+ Chr(13)+Chr(10) )
Case 3
ClearGadgetItems(1)
Case 4
End
EndSelect
EndIf
ForEver