1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Lehmden

Beiträge von Lehmden

  • JSON-UDF

    • Lehmden
    • 8. Oktober 2023 um 11:43

    Hi.

    Vielleicht kann mir hier jemand helfen. Ich versuche mein Open Source Programm Media-Buddy auch unter Linux ans Laufen zu bekommen, mit Hilfe von Wine. Ja, AutoIt ist nur für Windows, aber im allgemeinen laufen die kompilierten Skripte problemlos unter Wine.

    Eigentlich würde das auch hier funktionieren, aber es kommt beim Start immer eine Fehlermeldung "xxx.json" is not valid" und mein Programm beendet sich danach. Da ich diese Fehlermeldung nirgends selbst erzeuge, müsste sie eigentlich von der UDF her kommen. Unter Windows funktioniert alles. Die betreffende .json Datei selbst ist absolut in Ordnung. Die Fehlermeldung ist also eigentlich falsch. Was könnte da der Grund sein, denn .json sollte doch eigentlich Plattform- unabhängig sein? Wenn eine bestimmte Windows DLL dafür in der UDF verwendet wird, welche genau? Dann würde ich diese DLL mal in Wine zusätzlich installieren und schauen, ob es dann funktioniert.

    Ich habe noch nicht die neue 2023er Version der UDF in Gebrauch, werde ich gleich downloaden und testen.

    Ich bekomme in letzter Zeit immer mehr Anfragen, ob es Media-Buddy nicht auch als Linux Version geben könnte. Deswegen habe ich mir Linux Mint als Dual Boot zusätzlich auf meinem Rechner installiert. Media-Buddy hat sich über ca. 10 Jahre hinweg entwickelt und besteht aus ca. 30.000 Zeilen Code (ohne die zusätzlichen UDF, die ich verwende), was es praktisch unmöglich macht, es in eine andere Sprache (z.B. Free Basic) zu portieren. Wenn ich also eine Linux Version verfügbar machen will, dann nur über Wine.

    Außerdem gibt es ja Gerüchte, das Windows zukünftig nur noch als Abo Modell verfügbar sein soll. Sollte das tatsächlich passieren, ist Windows für mich gestorben. Abo Software verwende ich prinzipiell niemals. Dann müsste ich auch für mich selbst unbedingt eine Media-Buddy Version haben, die unter Linux lauffähig ist. Meine anderen Programme verwenden kein .json und funktionieren alle mit Wine. Ausgerechnet das komplexeste und wichtigste Programm aber nicht, was ich wirklich jeden Tag verwende und für das es unter Linux nicht mal ansatzweise eine Alternative gibt.

    Danke schon mal.

  • JSON-UDF

    • Lehmden
    • 24. Oktober 2020 um 09:23

    Hi.

    Nur ne kleine Rückmeldung. Nun funktioniert alles, wie es soll. bisher habe ich keine weiteren Abstürze erlebt. Danke!

  • JSON-UDF

    • Lehmden
    • 21. Oktober 2020 um 11:10

    Super, Danke. Muss ich heute Nachmittag gleich mal ausprobieren...

  • JSON-UDF

    • Lehmden
    • 18. Oktober 2020 um 16:23
    Zitat von AspirinJunkie

    (Quarantäne - Yeah!).

    Oh je... Hoffentlich nicht wirklich infiziert... Falls doch, auf jeden Fall gute Besserung und einen harmlosen Verlauf.

    Zitat von AspirinJunkie

    Ich bin dran

    Danke.


    Zitat von AspirinJunkie

    wird aber wohl noch ne Weile dauern

    Ist nicht so schlimm. Wenn es denn mal fertig ist, kann ich den Workaround binnen Sekunden wieder entfernen... Bis dahin läuft es erst mal ohne diese 4 Sprachen, was mich selbst natürlich nicht wirklich stört, aber andere User des Programms aus den entsprechenden Ländern vermutlich dann doch...

  • JSON-UDF

    • Lehmden
    • 18. Oktober 2020 um 10:28

    Hi.

    Ich habe jetzt erst mal einen Workaround eingebaut. Ich musste neben Japanisch und Hebräisch auch Chinesisch und Russisch raus nehmen, damit die Geschichte immer sauber durch läuft. Die beiden letzten Sprachen sind beim Aerosmith- Beispiel nicht vorhanden gewesen, aber z.B. bei Led Zeppelin,. womit ich später auch getestet habe. Erst nachdem ich alle 4 Sprachen entfernt habe, hat es ohne Crash funktioniert...

  • JSON-UDF

    • Lehmden
    • 16. Oktober 2020 um 21:14

    Hallo.

    Zuerst mal Danke für diese UDF, ohne die einige meiner Projekte erst gar nicht möglich wären.

    Nachdem ich diese UDF schon eine Weile erfolgreich im Einsatz habe, ist mir nun ein Problem mit _JSON_Parse unter gekommen.

    Im Moment baue ich den Musik- Part in mein Programm "Media-Buddy" ein. Dabei werden Metadaten für Interpreten von https://theaudiodb.com/ mit Hilfe deren API herunter geladen. Die Daten liegen (natürlich, sonst würde das hier ja nicht passen) im .json Format vor. Meistens funktioniert das Ganze einwandfrei. Aber manchmal stürzt AutoIt dabei ab,

    Es scheint, das es einen Puffer- Überlauf gibt, wenn ich die Google Suche nach "rc:-1073741571" richtig interpretiert habe. Wirklich schlau bin ich daraus aber nicht geworden.

    Was ich mir vorstellen kann, ist die massive Häufung von Unicode Steuerzeichen in der .json Datei, da sie einen langen Text (die Biographie der Band) sowohl auf Japanisch als auch auf hebräisch enthält, worin es ja (fast) keine "normalen" ASCII Zeichen gibt. Ich habe die entsprechende .json Datei mal angehängt. Eigentlich sogar zwei mal, denn die Original- Datei aus der Online- Datenbank besteht aus einer einzigen, etwa 80.000 Zeichen langen, Zeile. Ich habe dann, um mehr Übersicht zu haben, entsprechend diverse CR hinzugefügt, um die einzelnen Elemente besser auseinander halten zu können.

    Bei meinem Test- Pool hat es dieses Problem erst mal nur mit "Aerosmith" gegeben. Alle anderen Interpreten, mit denen ich getestet habe, haben solche Probleme nicht verursacht. Wenn ich aber z.B. Beatles, Michael Jackson, Led Zeppelin oder ähnliches teste, kommt es zu denselben Problemen wie bei Aerosmith, da dann ebenfalls eine Biographie auf Japanisch und/oder hebräisch vorhanden ist..

    Für den Fall, das es von Interesse ist, hier ist ein direkter Link zur API:

    https://www.theaudiodb.com/api/v1/json/1/…php?s=Aerosmith

    Man muss am Ende jeweils nur den Namen der Band, des Interpreten austauschen, um entsprechende Daten zu bekommen...

    Zum reproduzieren des Fehlers einfach die angehängte (oder eine selbst von TheAudioDB herunter geladene) .json Datei mit folgenden Befehlen einlesen und dann parsen:

    $String = FileRead("Artist.json")

    $Object = _JSON_Parse($String)

    Dabei kommt es dann jedes Mal zum Crash, sofern die Biographie auf Japanisch und/oder hebräisch vorhanden ist. Falls nicht, läuft es einwandfrei...

    Das Problem liegt definitiv an der UDF, weswegen ich selbst nicht wirklich etwas daran ändern kann. Dafür verstehe ich zu wenig von der ganzen Geschichte. Falls sich das Problem hier nicht abstellen lässt, muss ich irgendwie die japanische und hebräische Beschreibung aus der. json entfernen, bevor ich sie parse... Das wäre aber nur ein unschöner Workaround, kein Fix...

    Hier ist noch die komplette Ausgabe während so einem Versuch:

    Zitat

    >"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\OneDrive\Entwicklung\AutoIt\Media-Buddy\Media-Buddy.au3" /UserParams

    +>20:33:49 Starting AutoIt3Wrapper (19.1127.1402.0} from:SciTE.exe (4.2.0.0) Keyboard:00000407 OS:WIN_10/ CPU:X64 OS:X64 Environment(Language:0407) CodePage:0 utf8.auto.check:4

    +> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\lehmd\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\lehmd\AppData\Local\AutoIt v3\SciTE

    >Running AU3Check (3.3.14.5) from:C:\Program Files (x86)\AutoIt3 input:D:\OneDrive\Entwicklung\AutoIt\Media-Buddy\Media-Buddy.au3

    +>20:33:53 AU3Check ended.rc:0

    >Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "D:\OneDrive\Entwicklung\AutoIt\Media-Buddy\Media-Buddy.au3"

    +>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+BREAK to Stop.

    !>20:34:23 AutoIt3.exe ended.rc:-1073741571

    +>20:34:23 AutoIt3Wrapper Finished.

    >Exit code: 3221225725 Time: 34.4

    Alles anzeigen

    Dateien

    Json_Problem.7z 20,83 kB – 606 Downloads
  • JSON-UDF

    • Lehmden
    • 27. November 2019 um 19:12

    Es funktioniert einwandfrei, genau wie gewünscht. Noch mal vielen Dank, ohne deine Hilfe hätte ich mich da tot gesucht...

  • JSON-UDF

    • Lehmden
    • 27. November 2019 um 18:47
    Zitat von AspirinJunkie

    $o_JSON.Item("Movies").Item("Image_Poster") = False

    Genau das hat mir gefehlt, vielen Dank. Damit müsste ich ohne weiteres klar kommen. Werde ich gleich mal ausprobieren.

    Auch die anderen Tips werde ich mir zu Herzen nehmen. Spart ein paar Zeilen Code. Irgendwo habe ich irgendwann mal gelesen, man sollte besser immer mit FileOpen / FileClose arbeiten, weil das sicherer und schneller wäre. Das ist aber schon lange her und ich weiß auch nicht mehr in welchem Zusammenhang das da erwähnt wurde. Deswegen mache ich das eigentlich immer so, einfach aus Gewohnheit.

    Ich werde mich noch mal melden, um zu Berichten, ob es jetzt auch bei mir funktioniert.

    Noch mal Danke.

  • JSON-UDF

    • Lehmden
    • 27. November 2019 um 14:19

    Hi.

    Ich muss leider auch mal was fragen, weil ich einfach nicht weiter komme... Ich nutze die UDF, um die .json Konfigurationsdatei eines externen Programms in meinem Programm einzulesen. Das funktioniert wunderbar. In meinem Programm, welches ein GUI hat, sollen jetzt aber auch Einstellungen für das externe Programm vorgenommen werden können. Das externe Programm hat kein GUI aber beide Programme arbeiten direkt zusammen. Deswegen sollen in meiner GUI auch die Einstellungen für das externe Programm (welches nicht in AutoIt geschrieben ist) mit vorgenommen werden.

    Also muss ich auch Werte zurück schreiben und somit die .json Datei neu erzeugen. Grundsätzlich funktioniert das auch. Nur bei "verschachtelten" Elementen, weiß ich einfach nicht, wie ich diese Elemente direkt ansprechen kann, um sie zu ändern.

    Code
        $fle_hwnd = FileOpen(@ScriptDir & "\nfo4HTPC.Settings.json")
    
        $j_String = FileRead($fle_hwnd)
    
        FileClose($fle_hwnd)

    Damit wird die .json Datei eingelesen

    Dann erzeuge ich per

    Code
        $j_Object = _JSON_Parse($j_String)

    eine Datenstruktur, aus der ich die einzelnen Elemente/Werte auslesen kann.

    Code
        Global $json_MinimumDiscSpace = _JSON_Get($j_Object, "MinimumDiscSpace")
        Global $json_Ignore_nfo_IDs = _JSON_Get($j_Object, "Ignore_nfo_IDs")
    ...
        Global $json_Image_Movie_Poster = _JSON_Get($j_Object, "Movies.Image_Poster"
    ...

    Das klappt alles einwandfrei. Wie man sieht, gibt es sowohl "einfache" Elemente wie "MinimumDiscSpace" als auch "verschachtelte" wie "Movies.Image_Poster". Wie gesagt, alles kein Problem.

    Das Ganze bereitet erst dann Probleme, wenn ich die Werte wieder zurück schreiben will.

    Ich kann leicht einen neuen Wert für "MinimumDiscSpace" zuweisen:

    Code
    $j_Object("MinimumDiscSpace") = GUICtrlRead($input_94_01)

    und dann die .json Datei neu generieren, mit den geänderten Werten...

    Code
        $file = FileOpen(@ScriptDir & "\nfo4HTPC.Settings.json", 2)
    
        FileWrite($file, _JSON_Generate($j_Object))
    
        FileClose($file)

    Nur bei den "verschachtelten" Elementen, da habe ich einfach keinen Durchblick. Wenn ich

    Code
    $j_Object("Movies.Image_Poster") = "true"

    versuche, wir ans Ende der .json Datei eine Zeile angehängt mit

    Zitat


    "Movies.Image_Poster": "true"

    statt, wie ich eigentlich erreichen will das Element

    Zitat

    "Movies": {

    "Image_Poster": false,

    ...

    },

    auf

    Zitat

    "Movies": {

    "Image_Poster": true,

    ...

    },

    zu ändern.

    Wie bitte muss ich

    Code
    $j_Object("Movies.Image_Poster") = "true"

    formatieren, damit das gewünschte Ziel erreicht wird.

    Ich muss gestehen, vor dieser Anwendung der JSON_UDF habe ich noch nie etwas mit Datenstrukturen bzw Dictionary zu tun gehabt. Ich bin bisher immer mit Variablen und Arrays ausgekommen...

    Vielen Dank schon mal für eure Antworten und eure Zeit.

  • Fehlende Umlaute in Labeln.

    • Lehmden
    • 21. Juli 2017 um 12:40
    Zitat von AspirinJunkie

    Sag das Microsoft

    Ok, mache ich... ;)
    Deine HTML Entity Funktion werde ich demnächst sicher mal ausprobieren, danke dafür.

  • Fehlende Umlaute in Labeln.

    • Lehmden
    • 21. Juli 2017 um 12:37
    Zitat von Sonderbaar

    Krasses Teil laut Screenshot!

    Klar, ist a) online zum download verfügbar und B) OpenSource. Der Quellcode ist bei der Installation mit dabei.
    https://forum.team-mediaportal.com/threads/epg-bu…pg-tool.135452/
    EPG-Buddy dient zu "grabben" von EPG Daten (elektronische Programmzeitschrift) aus verschiedenen weltweiten Quellen, die dann zum einen mit der TV-Serien Online Datenbank thetvdb.com abgeglichen und mit Staffel- und Episoden Nummern versehen werden und dann so aufgearbeitet werden, dass HTPC Programme wie MediaPortal, Kodi, Emby,... diese "aufgehübschten" Daten verwerten können.
    Ist mein bisher "zweitgrößtes" Projekt in AutoIt gewesen, nach "MKV-Buddy" einem sehr komfortablen und umfangreichen Programm zur Video Bearbeitung und Verschönerung.
    http://www.softpedia.com/get/Multimedia…MKV-Buddy.shtml

  • Fehlende Umlaute in Labeln.

    • Lehmden
    • 21. Juli 2017 um 12:27

    Danke sehr.
    Aber eigentlich ist das eine blöde Geschichte. Zum einen ist es nicht konsistent, also kann ich kein "Globales" Ersetzen machen, sondern muss das auf Label beschränken. Und zum anderen ist & nun nicht gerade selten in Verwendung. Ein deutlich "exotischeres" Escape Symbol wäre doch sinnvoller. Dann würde man nicht so oft in solche Probleme geraten...

    Und wenn ich schon mal dabei bin... Kan man AutoIt irgendwie beibringen, HTML Entities in "Klarschrift" darzustellen, also z.B. "&" als "&" oder "Ü" als "Ü", ohne dauernd mit StringReplace zu hantieren?

  • Fehlende Umlaute in Labeln.

    • Lehmden
    • 21. Juli 2017 um 10:58

    Hi.
    Bei allen meinen Projekten fällt mir schon länger eine Sache unangenehm auf. Wenn man einen String mit Umlauten aus einer SQLite Datenbank ausliest, werden die Umlaute nicht oder falsch dargestellt. Aber eben nur in Labeln. An anderer Stelle, Listen, Comboboxen usw) wird der String richtig dargestellt. Mal ein Beispiel- Screenshot:
    Beispiel.jpg
    In der mittleren Liste wird der String korrekt dargestellt, in den Labeln rechts fehlt das & bzw wird durch ein _ ersetzt... Das ist so bei allen meinem Programmen. Also mache ich etwas grundsätzliches falsch oder es handelt sich um einen Bug in AutoIt.
    Da der Code des Beispiels ziemlich umfangreich ist (über 5500 Zeilen), stelle ich hier nur mal den Abschnitt ein, der für diesen Bereich zuständig ist.
    Die Liste und die Label dieses Tabs werden so erzeugt:

    AutoIt
    #Region ;Generate EPG Data TVGuide.com GUI (3-5)
    	Global $label_35_01 = GUICtrlCreateLabel($lng_epgdata & " - TVGuide.com", 20, 180, 600, 50)
    	GUICtrlSetFont(-1, 20, 700, 0, "Georgia")
    
    
    	Global $pic_35_01 = GUICtrlCreatePic(@ScriptDir & "\Images\TVGuidecom-Logo.bmp", 920, 173, 50, 50)
    
    
    	Global $check_35_01 = GUICtrlCreateCheckbox("TVGuide.com - " & $lng_notvdb, 20, 530, 320)
    
    
    	Global $label_35_11 = GUICtrlCreateLabel($lng_selectchannel, 350, 250, 300, 20)
    	GUICtrlSetFont(-1, 10, 700, 0, "Verdana")
    
    
    	Global $listview_35_11 = GUICtrlCreateList("", 350, 280, 260, 320, $LBS_DISABLENOSCROLL + $WS_BORDER + $WS_VSCROLL, $ES_READONLY)
    
    
    	Global $label_35_21 = GUICtrlCreateLabel($lng_channelsettings, 700, 250, 300, 20)
    	GUICtrlSetFont(-1, 10, 700, 0, "Verdana")
    
    
    	Global $label_35_22 = GUICtrlCreateLabel("", 700, 270, 250, 20)
    	GUICtrlSetFont(-1, 10, 700, 0, "Verdana")
    
    
    	Global $label_35_23 = GUICtrlCreateLabel($lng_xmltv_name, 700, 300, 250, 20)
    
    
    	Global $label_35_24 = GUICtrlCreateLabel("", 700, 330, 250, 20)
    
    
    	Global $label_35_25 = GUICtrlCreateLabel($lng_channeldbname, 700, 360, 250, 20)
    
    
    	Global $input_35_21 = GUICtrlCreateInput("----------", 700, 340, 250, 20)
    
    
    	Global $combo_35_21 = GUICtrlCreateCombo("----------", 700, 380, 250, 20)
    	GUICtrlSetData($combo_35_21, "----------", "----------")
    
    
    	Global $check_35_21 = GUICtrlCreateCheckbox($lng_loadtvdb, 700, 450, 250, 20)
    
    
    	Global $check_35_22 = GUICtrlCreateCheckbox("", 700, 420, 300, 20)
    
    
    	Global $label_35_26 = GUICtrlCreateLabel($lng_daysgrab, 65, 583, 250, 20)
    
    
    	Global $input_35_22 = GUICtrlCreateInput($ini_maxdays_tvguide, 20, 580, 40, 20)
    
    
    
    
    	If $ini_notvdb_tvguide = "1" Then
    
    
    		GUICtrlSetState($check_35_01, $GUI_CHECKED)
    
    
    	Else
    
    
    		GUICtrlSetState($check_35_01, $GUI_UNCHECKED)
    
    
    	EndIf
    
    
    
    
    	Dim $Array_GUI_Elements_35[1]
    
    
    	_ArrayAdd($Array_GUI_Elements_35, $check_35_01)
    
    
    	_ArrayAdd($Array_GUI_Elements_35, $label_35_01)
    ;~ 	_ArrayAdd($Array_GUI_Elements_35, $label_35_03)
    	_ArrayAdd($Array_GUI_Elements_35, $label_35_11)
    	_ArrayAdd($Array_GUI_Elements_35, $label_35_21)
    	_ArrayAdd($Array_GUI_Elements_35, $label_35_22)
    	_ArrayAdd($Array_GUI_Elements_35, $label_35_26)
    
    
    	_ArrayAdd($Array_GUI_Elements_35, $listview_35_11)
    
    
    	_ArrayAdd($Array_GUI_Elements_35, $input_35_22)
    
    
    	_ArrayAdd($Array_GUI_Elements_35, $pic_35_01)
    
    
    
    
    	Dim $Array_GUI_Elements_35_6[1]
    
    
    	_ArrayAdd($Array_GUI_Elements_35_6, $check_35_21)
    	_ArrayAdd($Array_GUI_Elements_35_6, $check_35_22)
    
    
    	_ArrayAdd($Array_GUI_Elements_35_6, $input_35_21)
    
    
    	_ArrayAdd($Array_GUI_Elements_35_6, $label_35_23)
    
    
    
    
    	Dim $Array_GUI_Elements_35_7[1]
    
    
    	_ArrayAdd($Array_GUI_Elements_35_7, $check_35_21)
    	_ArrayAdd($Array_GUI_Elements_35_7, $check_35_22)
    
    
    	_ArrayAdd($Array_GUI_Elements_35_7, $combo_35_21)
    
    
    	_ArrayAdd($Array_GUI_Elements_35_7, $label_35_23)
    	_ArrayAdd($Array_GUI_Elements_35_7, $label_35_24)
    	_ArrayAdd($Array_GUI_Elements_35_7, $label_35_25)
    
    
    
    
    
    
    #EndRegion
    Alles anzeigen

    Und die Daten werden dann so eingefügt:

    AutoIt
    Global $channel_query5, $channel_array5, $channel_Rows5, $channel_Columns5
    
    
    ...
    
    
    ; Read Available Channels for TVGuide
    $channel_query5 = "SELECT NAME, MAX_DAYS, CATEGORY, XMLTV_ID, RUN_E2T FROM TVGUIDE_CHANNELS ORDER BY UPPER(NAME) ;"
    
    
    $channel_Rval5 = _SQLite_GetTable2d($buddy_db, $channel_query5, $channel_array5, $channel_Rows5, $channel_Columns5)
    
    
    ...
    
    
    ;Function to Update controls.
    Func _SetData_Channel_35($item)
    
    
    	Local $index
    
    
    	_WriteLog("Info - _SetData_Channel_35 started")
    
    
    	_ShowGui_Channellist_35()
    
    
    	$index = _ArraySearch($channel_array5, $item)
    
    
    	If $ini_loglevel = 1 Then _WriteLog("Debug - Set Channels TVGuide Data - List Item = " & $item)
    
    
    	If $ini_loglevel = 1 Then _WriteLog("Debug - Set Channels TVGuide Data - List Index = " & $index)
    
    
    	_SetData($input_35_21, $channel_array5[$index][3])
    
    
    	_SetData($label_35_22, $channel_array5[$index][0])
    
    
    	_SetData($label_35_24, $channel_array5[$index][3])
    
    
    	_SetData($combo_35_21, "----------")
    
    
    	If GUICtrlRead($check_35_01) = 1 Then
    
    
    		GUICtrlSetState($check_35_21, $GUI_UNCHECKED)
    
    
    		GUICtrlSetState($check_35_21, $GUI_DISABLE)
    
    
    	Else
    
    
    		GUICtrlSetState($check_35_21, $GUI_ENABLE)
    
    
    
    
    		If $channel_array5[$index][4] = "True" Then
    
    
    			GUICtrlSetState($check_35_21, $GUI_CHECKED)
    
    
    		Else
    
    
    			GUICtrlSetState($check_35_21, $GUI_UNCHECKED)
    
    
    		EndIf
    
    
    	EndIf
    
    
    	If $channel_array5[$index][1] > 0 Then
    
    
    		GUICtrlSetState($check_35_22, $GUI_CHECKED)
    
    
    	Else
    
    
    		GUICtrlSetState($check_35_22, $GUI_UNCHECKED)
    
    
    	EndIf
    
    
    	_SetData($check_35_22, $channel_array5[$index][3] & " " & $lng_grabfrom & " TVGuide?")
    
    
    EndFunc
    
    
    
    
    ...
    
    
    Func _SetData($cControl, $sData)
    
    
    	If GUICtrlRead($cControl) <> $sData Then GUICtrlSetData($cControl, $sData)
    
    
    EndFunc
    Alles anzeigen


    In der Liste werden die Sonderzeichen richtig dargestellt, in den Labeln nicht. Warum?

    Vielen Dank schon mal...
    Grüße, Claus.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • Lehmden
    • 16. Februar 2015 um 13:15

    Hi.
    Ich habe jetzt eine SQLite3.dll zum Script gepackt und das "Nach Hause Telefonieren" ist weg. Lag also definitiv daran.
    Ich denke auch, das ist keine "nette" Angelegenheit und gehört unbedingt abgestellt.

    Na Ja wird das Installationspaket halt ein wenig größer, was solls.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • Lehmden
    • 13. Februar 2015 um 17:38

    Hi.
    Danke für die Antworten. Ich werde mal testen, ob es an der SQLite.dll liegt.
    Da das Hauptprogramm (in C# geschrieben) sowieso ohne SQLite.dll nicht läuft, werde ich den Mailverkehr einfach ignorieren, wenn das der einzige Grund ist. Extra noch eine dll dazu packen, ist nicht nötig, denke ich. Den Pfad der eigentlichen Dll müsste ich erst umständlich ermitteln, da das Hauptprogramm ja u.U. nicht im Standard- Pfad installiert sein könnte. Dann lieber diesen Mailverkehr als notwendig erklären.

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • Lehmden
    • 13. Februar 2015 um 13:11

    Dachte ich ja auch, aber sieh selbst:

  • Kompilieres Script kommuniziert ungebeten mit mail.autoscript.com

    • Lehmden
    • 13. Februar 2015 um 12:34

    Hallo.
    Ich habe gerade festgestellt, das mein kompiliertes Programm eine Verbindung zu mail.autoscript.com aufbaut. Wie kommt das und wie kann ich das abschalten? Habe gerade einen ganz bösen Brief deswegen bekommen...

    Forumssuche hat nichts ergeben. Es kamen nur haufenweise Posts über Emails in AutoIt. Irgendwelche Email Funktionen werden nicht verwendet da das Programm nur unsichtbar eine SQLite Datenbank absichern soll (und auch macht). Quellcode ist angehängt.

    Danke schon mal.

  • SQLite GUID wird immer als HEX Wert ausgegeben...

    • Lehmden
    • 31. Dezember 2014 um 09:51

    Hi.
    Ich habs raus. Die GUID in der Original Datenbank sind binär, aber als Text abgespeichert, da dann weniger Platz verbraucht und weniger Zeit benötigt wird. Darauf muss man erst mal kommen...
    Danke für die Hilfe...

  • SQLite GUID wird immer als HEX Wert ausgegeben...

    • Lehmden
    • 30. Dezember 2014 um 22:28

    Hi.
    Danke fürs anschauen.
    Bei mir kommt das dabei raus:

    0xEAF65345D220AD45A0E7ED8D484B1613

    Muss ich meine AutoIt Version vielleicht updaten? (3.3.12.0)

    Ich schau mir das morgen noch genauer an.

  • SQLite GUID wird immer als HEX Wert ausgegeben...

    • Lehmden
    • 30. Dezember 2014 um 19:48

    Hallo.
    Ich möchte eine exitierende SQLite Datenbank mit AutoIt bearbeiten. Grundsätzlich ist mir die SQL Syntax halbwegs klar, auch mit AutoIt kann ich ein wenig umgehen. Doch jetzt habe ich ein Problem, das ich ohne Hilfe nicht lösen kann. In der DB, die ich bearbeite werden GUID in der Form "37DD9D24-9A85-4E5B-BBBF-D8C283C1E144" verwendet. Die Entsprechende Zelle ist vom Typ "Text" was ich auch nicht ändern kann.

    AutoIt liest das aber immer als mathematische Operation, sprich als Subtraktion von Hex- Zahlen, mit dem Ergebnis, das man mit der Ausgabe nichts mehr anfangen kann...

    Statt 37DD9D24-9A85-4E5B-BBBF-D8C283C1E144 wird etwas wie 0xaa12d1..... ausgegeben, teilweise auch als negativer Wert, je nach dem wie groß die Werte im String sind.

    Meine Queries funktionieren einwandfrei, solange ich irgendeine andere Zelle auslese. Nur bei den GUID geht das schief. Ich bin aber auf die GUID angewiesen, da sie die Verbindung zwischen diversen Tabellen herstellen...

    Code
    Local $hQuery, $aRow, $MI_ID
    
    
        $query = "SELECT M_MEDIAITEM.MEDIA_ITEM_ID FROM M_MEDIAITEM INNER JOIN M_SERIESITEM ON M_MEDIAITEM.MEDIA_ITEM_ID = M_SERIESITEM.MEDIA_ITEM_ID INNER JOIN NM_EPISODE ON NM_EPISODE.MEDIA_ITEM_ID = M_SERIESITEM.MEDIA_ITEM_ID INNER JOIN V_EPISODE ON NM_EPISODE.ID = V_EPISODE.ID WHERE ATTRIBUTE_VALUE = " & $Episode & " AND SEASON = " & $Season & " AND TVDBID = " & $TVDBID
    
    
        _SQLite_Query(-1, $query, $hQuery)
    
    
        While _SQLite_FetchData($hQuery, $aRow, False, False,) = $SQLITE_OK ; Read Out the next Row
    
    
        ;_ArrayDisplay($aRow)
    
    
        
        $MI_ID = $aRow[0]
    
    
    
        $query2 = 'UPDATE M_MEDIAITEM SET PLAYCOUNT=1 WHERE M_MEDIAITEM.MEDIA_ITEM_ID = "' &  $MI_ID & '" ;'
    
    
        _SQLite_Exec(-1, $query2) ; INSERT Data
    
    
    Wend
    Alles anzeigen

    Das Problem entsteht bei "_SQLite_FetchData" was eben aus der GUID eine Hex- Zahl macht. Wenn ich statt "M_MEDIAITEM.MEDIA_ITEM_ID" z.B. M_MEDIAITEM.TITLE" verwende (in beiden Queries natürlich) , klappt alles wie gewünscht. M_MEDIAITEM.TITLE ist auch vom Typ "Text" beinhaltet aber "richtigen" Text, also auch Buchstaben jenseits des "F"... Auch die While - WEnd Schleife kann ich ganz weg lassen oder anders positionieren, das ändert nichts am grundsätzlichem Problem, das "_SQLite_FetchData" aus der GUID eine Hex- Zahl berechnet.

    Weiß jemand Rat?
    Danke schon mal und Guten Rutsch.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™