Txt-Datei auslesen und Teile davon im Gui anzeigen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Txt-Datei auslesen und Teile davon im Gui anzeigen

08 Oct 2017, 17:42

Hallo,

ich möchte eine Txt-Datei(große Datei) auslesen, die z.B. so aussieht:

ticket;symbol;typ;magicnumber;netto;day;month;comment
1234591;EURUSD;SHORT;12381;1,00;Sonntag;Oktober;EA V.1
1234592;EURUSD;LONG;12380;0,70;Sonntag;Oktober;EA V.1
1234593;EURUSD;SHORT;12382;-0,10;Sonntag;Oktober;EA V.1
1234594;EURUSD;SHORT;12382;0,70;Montag;Oktober;EA V.1
1234595;EURUSD;SHORT;12383;0,80;Montag;Oktober;EA V.1

und soll dann z.B. so in einem Gui angezeigt werden:
Gui.jpg
Gui.jpg (29.49 KiB) Viewed 376 times


Jetzt weiß gar nicht so recht, wie ich anfangen soll. Auf Grund der Größe der Datei, weiß ich, wird "Loop, read, C:\Test.txt" empfohlen. Doch wie mache ich das, dass ich nach dem Speichern in die Variablen mir Wörter der Zeilen raussuche, wo das Programm dann auch noch weiß, dass die "Magicnumber" und das "Comment" in einer Zeile sind und somit zusammengehören?

Entspannte Grüße
Fresh Janine
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 03:22

Moin,

Dein Dateibeispiel sieht aus wie eine CSV-Datei, die sich über den Feldtrenner ; einfach aufteilen lässt. Das Bild des Fensters legt nahe, ein ListView für die Darstellung zu verwenden. Dabei gibt es möglicherweise Probleme.

  • ListViews zeigen pro Spalte nur die ersten 260 Zeichen des Spaltentextes an. Wenn die aneinandergeketteten Magicnumbers länger werden, wird die Anzeige abgeschnitten.
  • Wenn Du für jede Magicnumber eine eigene Spalte anlegen willst, bekommst Du ein Problem, wenn die Gesamtzahl der Spalten 200 überschreitet. Das ist laut Hilfedatei die maximale Spaltenzahl.
Soll die Darstellung im Fenster mehr als eine nackte Anzeige sein, soll heißen, willst Du die im Fenster dargestellten Daten noch verarbeiten?

Edit: In Deinem Beispiel gibt es die Magicnumber 12382 doppelt. Ist das normal und soll das irgendwie besonders behandelt werden?
Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 07:07

Also erstmal, dieses Programm: "https://autohotkey.com/board/topic/37308-trout-a-bass-driven-audio-player-written-in-ahk/" nutzt auch Listview. Ich hatte es gerade ausprobiert und es gibt da keine maximale Spaltenzahl. Und die 260 Zeichen würden locker für die Magicnumbers ausreichen.
Du hast recht, es könnte auch eine Csv-Datei sein. Ich könnte meine Liste auch als Csv-Datei abspeichern lassen, doch ich hab mich für eine Txt-Datei entschieden, da ich es als etwas einfacher empfinde, darauf ein Ahk-Programm basieren zu lassen.
Das häufig die selbe Magicnumber auftaucht ist vollkommen normal und soll auch so sein. Und in der Tabelle soll keine Magicnumber doppelt angezeigt werden.
Diese Tabelle ist eigentlich nur der Anfang eines nützliches Tools. Es soll am Ende eigentlich so aussehen:
Analyse01.ahk
(1.14 KiB) Downloaded 6 times


Im ersten Tab ist die untere Liste nur eine Anzeige zur Übersicht und in der oberen Tabelle speichert man seine EAs (Expert Advisor) mit den dazugehörigen Magicnumbers ein, was sehr wichtig ist, denn wenn man dann in der oberen Tabelle auf eine Zeile doppelklickt, soll automatisch Tab 2 fokussiert werden und man soll nur das Ergebnis dieser selbst eingetragenen Magicnumbers sehen. Genau so wie, wenn man dann in Tab 2 in der linken Tabelle auf eine Zeile doppelklickt, dann soll Tab 3 fokussiert werden und man sieht nur das Ergebnis von diesen Tag mit diesen Magicnumbers.
Ich fürchte, dieses Tool übersteigt zu sehr meine Kompetenz. Was würde es mich kosten, das von jemanden programmieren zu lassen?
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 10:38

OK, den Begriff 'Expert Advisor' habe ich schon mal gehört. Es geht hier um ein Börsenprogramm, oder?

Die Begrenzung auf 200 Spalten gilt zumindest für die Funktion LV_InsertCol(). Das ListView Control nimmt aber beim Erstellen deutlich mehr Spalten an.

Wenn Du glaubst, dass 260 Zeichen ausreichen, um alle Magicnumbers darzustellen, sollten auch 200 Spalten locker reichen. Du hast ja vor, per Doppelklick im ersten ListView die Magicnumbers auszuwerten. Wenn Du immer alle auswerten willst, geht das in einer Spalte. Wenn Du sie allerdings einzeln auswerten willst, solltest Du jeder Nummer eine eigene Spalte gönnen.

Zum Thema 'doppelte Magicnumbers' hast Du Dich nicht geäußert.

AHK ist die Dateiendung egal, solange der interne Aufbau stimmt. Die eingebauten CSV-Funktionen unterstützen aber nur das Komma als Feldtrenner. Die braucht man aber nicht, wenn sichergestellt ist, dass das Trennzeichen (hier Semikolon) nie innerhalb der Felder vorkommt.

Ansonsten habe ich nichts gehört oder gesehen, was nicht machbar wäre. Und, falls Du DIch dafür entscheidest, es gegen Bezahlung in AHK programmieren zu lassen, es ist bisher auch nichts dabei, das für einen 'Experten' mit echter Arbeit verbunden wäre. Man mag sich allerdings fragen, wie 'wertvoll' das Ergebnis für Dich ist.
Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 12:09

In der 5. Zeile hatte ich doch zum Thema 'doppelte Magicnumbers" Stellung genommen, Zitat: "Das häufig die selbe Magicnumber auftaucht ist vollkommen normal und soll auch so sein. Und in der Tabelle soll keine Magicnumber doppelt angezeigt werden.".
Ja, es ist soll ein Tool für ein Börsenprogramm werden.
Du hast mir soweit schon gut geholfen, danke dir :)
Doch ich habe vorhin tatsächlich schon beschlossen, dass ich es von einem Experten programmieren lassen werde. Kennst du jemanden, der gegen Bezahlung, deutsch spricht und mit Leichtigkeit mein Analyse-Tool programmieren könnte?
garry
Posts: 942
Joined: 22 Dec 2013, 12:50

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 14:01

ähnliches Beispiel mit 2 Listbox und 1 Listview
z.B. News > Zürich > Info/start url

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
nnnik
Posts: 2193
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 14:45

Fresh Janine wrote:"Das häufig die selbe Magicnumber auftaucht ist vollkommen normal und soll auch so sein. Und in der Tabelle soll keine Magicnumber doppelt angezeigt werden."

Das sagt uns aber noch nicht wie genau deoppelte Magicnumbers behandelt werden sollen - was soll passieren wenn eine doppelte Nummer auftaucht? Soll die zweite ignoriert werden, soll die erste ersetzt werden oder sollen etwa beide verrechnet werden?
Recommends AHK Studio
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 15:50

Wenn das Tool noch mal die gleiche Magicnumber findet, was sehr häufig der Fall sein wird, dann soll er diese ignorieren.

Jetzt sind schon 3 Experten hier. Vielleicht hat einer von euch Lust gegen Geld mir das Analyse-Tool zu programmieren?
Ich werde dann natürlich auch alles ausführlich erklären.
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

09 Oct 2017, 16:00

Nun ja, die 5. Zeile habe ich wohl nicht wahrgenommen.

Zum Thema Auftragsprogrammierung:
Wie ich die Diskussion im englischen Forum verstanden habe, ist das nicht unbedingt gern gesehen, aber auch nicht verboten. Allerdings sind die "Ich brauche Hilfe" Foren dafür tabu. In diesen Foren wird immer ohne eine vorher vereinbarte finanzielle Gegenleistung geholfen. Du solltest deshalb einen neuen Thread in "Allgemeines" aufmachen.

Auch dort sind öffentliche Verhandlungen über das Entgelt eigentlich tabu. In jedem Fall solltest Du DIr Gedanken über eine konkrete Anforderungsliste (Pflichtenheft) machen, die so formuliert ist, dass 'Missverständnisse' ausgeschlossen sind. Wenn Dir das nicht gelingt, kommt es mit großer Wahrscheinlichkeit zu Diskussionen darüber, ob das gelieferte Produkt die Anforderungen erfüllt.
Remaining with AHK 1.1.25.02 until v2 will become beta.
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

10 Oct 2017, 03:42

Moin,

Du hast ja anscheinend noch keine endgültige Entscheidung über die 'Auftragsarbeit' getroffen. Damit Du das etwas besser beurteilen kannst, habe ich mal mit Beispieldaten das untere ListView Control im ersten Tab gefüllt, wie ich es verstanden habe:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

10 Oct 2017, 08:14

Ich wusste doch, dass euch das Spaß macht. Besonders dir just me, danke dir! Hab mich über dein Code sehr gefreut! Mir macht AHK ja auch Spaß, nur diesmal ist das Level für mich ein wenig zu hoch. Ich wollte noch, dass die Magicnumbers numerisch sortiert sind, doch wohin mit dem Befehl: "Sort MN, N D,"? Und das man die Liste editieren kann, nicht um drin rum zu schreiben, sondern einfach nur das man mehrere Magicnumbers markieren kann. Die Dropdownliste mit MT4 soll dann dafür da sein, dass man zwischen verschiedenen Listen wechseln kann. Und ich mach mir ja schon fest entschlossen Gedanken über die konkrete Anforderungsliste, doch nebenbei versuch ich auch so weit zu kommen, wie es geht :)
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

10 Oct 2017, 08:56

Ich geh mal davon aus, dass Du das Skript nur selbst nutzen willst, sodass es reicht, wenn die gewünschten Funktionen überhaupt irgendwie umgesetzt werden.

Wenn Du in einem ListView editieren willst, besteht die einfachste Lösung darin, die zu editierenden Daten in die erste Spalte zu schreiben. Dann geht das mit -ReadOnly.

Über die Sortierung bin ich auch schon gestolpert. Folgende Änderung sollte helfen, stellt die EA aber noch in die erste Spalte:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

10 Oct 2017, 13:02

Ja, das Programm ist nur für mich und deine Sortierung funktioniert hervorragend!
Ich hab mir für das markieren des Textes eine andere praktische Lösung überlegt und bin auch kurz vor dem Ziel, doch es klappt nicht ganz. Vielleicht weißt du, just me, voran es liegt, schau:
Analyse01.ahk
(2.78 KiB) Downloaded 3 times

Test.txt
(3.82 KiB) Downloaded 4 times

Die Datei Test.txt entspricht nun der orginalen Liste. Ich hab nur die Kommentare und die Magicnumbers ein wenig verändert.

Das richtige Verwenden von A_EventInfo brauch ich ja dann auch für die Tabelle darüber, wo nach einem Klick dann der 2. Tab fokussiert wird und die 2 Tabellen füllen sich dann anhand der Information, was im 1. Tab in der oberen Tabelle angeklickt wurde.
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

10 Oct 2017, 15:43

AHK geht mit ListViews recht merkwürdig um. Die LV_...() Funktionen beziehen sich immer auf das Standard-ListView des aktuellen Standard-GUIs. Und das ist standardmäßig das zuletzt vor Aufruf der Funktion erstellte ListView. Selbst in dem einem ListView zugeordneten g-label wird das auslösende ListView nicht als Standard gesetzt, sein GUI dagegen schon.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

12 Oct 2017, 00:24

Hallo,

danke just me. Du hast mir da wirklich sehr geholfen! Ich hab dadurch fleißig weiter getüfftelt. Ich hab schon oft deinen Namen gesehen und wie du geduldig den Menschen weitergeholfen hast. Chapeau! An der Stelle.

Und jetzt weiß ich wieder absolut nicht weiter. Ich hab alles schön programmiert, doch wie ich am Ende, nach dem ich den Eintrag editiert habe oder einen neuen Eintrag schreibe, speichere, versteh ich nicht. Löschen geht auch nicht, doch wenn dann das andere geht, könnte es sein, das sich das von selbst erklärt.

Weiß jemand eventuell weiter?
Analyse01.ahk
(4.98 KiB) Downloaded 2 times

Liste.txt
(3.82 KiB) Downloaded 2 times

MT4-1.ini
(127 Bytes) Downloaded 2 times
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

12 Oct 2017, 03:09

Moin,

ich sehe, das Skript ist gewachsen. Ich will allerdings nicht raten, was die neuen Routinen tatsächlich machen sollen. Würdest Du das bitte genau beschreiben?

Ein paar Anmerkungen vorab:
Für mich sieht das so aus, als ob das ListView aus einer von mehreren INI-Dateien gefüllt wird, die über das DDL ausgewählt werden können. Du solltest dabei nicht immer wieder ein neues ListView erstellen. Das würde auch zu Fehlern führen, wenn der Name LV1 ein weiteres Mal genutzt werden soll. Stelle das Gui, Add, ListView, ... deshalb wieder nach oben.

Code: [Select all] [Download] GeSHi © Codebox Plus

Gui Add, DropDownList, x100 y255 w305, MT4-1||MT4-2||MT4-3||MT4-4||MT4-5||MT4-6||MT4-7||MT4-8
Die Listeneinträge werden nur durch ein Pipe-Zeichen | getrennt. Nur wenn ein Eintrag ausgewählt werden soll, in diesem Fall wohl MT4-1, folgen ihm zwei Pipes.

Code: [Select all] [Download] GeSHi © Codebox Plus

New:
Gui, ListView, LV1
{
Gui New: New
Gui Font, s10, Verdana
Gui Add, Edit, x12 y12 h25 w577 vNew1
Gui Add, Edit, x12 y50 h80 w577 vNew2
Gui Add, Button, x240 y140 w120 h25 gSave, &Save
Gui Show, h177 w600, New
}
Return
Verwende die Block-Klammern { ... } nur dann, wenn sie gebraucht werden. Anderenfalls kann AHK manchmal merkwürdig reagieren, wenn man den an sich funktionierenden Code noch einmal ändert.
Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

12 Oct 2017, 10:15

Ich hab natürlich gleich alle Hinweise umgesetzt und bei der Dropdownliste hab ich gar keine Doppel-Pipe, weil erstmal keine Listen gefüllt werden sollen, doch das erläutere ich jetzt genauer:

Das mit der Dropdownliste im ersten Tab, hat folgenden Grund. Auf mein Server laufen mehrere MT4-Instanzen (Metatrader 4) und jeder MT4 speichert eine eigene Historie-Liste(in unseren Beispiel ist das die Liste.txt). Und auf jeden MT4 laufen unterschiedliche automatische Handelssysteme, die z.B. dann heissen wie "Pipmaker" oder "Mein eigenes System". Ich hab mir eben überlegt, dass wenn ich das Programm starte, dann soll in der Dropdownliste erstmal gar nichts ausgewählt sein und dementsprechend sollen alle Listviews auch leer sein. Erst wenn ich in der Dropdownliste eine MT4-Instanz auswähle, soll von dieser MT4-Instanz die dazugehörige Historie-Liste, für Listview "LV2", und die dazugehörige Ini-Datei, die im oberen Listview(LV1) angezeigt wird, geladen werden. Und davon hab ich auch kein Plan, wie das alles funktionieren soll.

Wenn z.B. in der Dropdownliste MT4-2 ausgewählt ist, dann soll auch nur in der MT4-2.ini gespeichert werden:
Wenn ich im EditGui auf den Save-Button klicke, dann soll die Information in der Ini-Datei überschrieben werden.
Wenn ich im NewGui auf den Save-Button klicke, dann soll die Information unten in der Ini-Datei hinzugefügt und gespeichert werden. Und jedes mal, wenn was gespeichert wurde, möchte ich die Veränderung auch sofort im Listview(LV1) sehen und genau wie mit dem Speichern, weiß ich nicht, was da der richtige Weg ist. Ergo, ich weiß überhaupt nicht mehr weiter.

Später wenn das Script fertig programmiert ist, soll wenn man im oberen Listview(LV1) auf eine Zeile doppelklickt, die 2 Tabellen im zweiten Tab, nur Informationen anhand dieser in der Zeile befindlichen Magicnumbers und natürlich anhand der aktuell ausgewählten MT4-Instanz, sich füllen.

Ich bezahl dich auch gern dafür, doch ich hab das Gefühl, du möchtest lieber für Nachfolgerschaft sorgen und dein Wissen weitergeben, was ja auch ok ist, denn schließlich gilt: Einmal Autohotkey, immer Autohotkey. Ich meine, ich hätte auch das Programm mit Visual C# entwerfen können, doch da nehm ich lieber Autohotkey.
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

12 Oct 2017, 10:59

Fresh Janine wrote:Ich meine, ich hätte auch das Programm mit Visual C# entwerfen können, doch da nehm ich lieber Autohotkey.
Dann hast Du es gut. Ich kann nur AHK, etwas VBA und LotusScript und die 'nützliche' Sprache COBOL (ohne OO-Erweiterungen).

Wenn wir hier noch weiter zusammenarbeiten, wäre es schön, wenn Du nach Änderungen Deine jeweils aktuelle Skriptversion einstellst, damit wir nicht aneinander vorbei entwickeln.

Ansonsten werde ich versuchen, das Ganze in kleinen Teilen zu realisieren. Das könnte Dich dann in die Lage versetzen, ähnliche Teilprobleme selbst zu lösen. Auch für AHK gilt die alte Weisheit: Versuch macht kluch!

Wenn ich mir Dein bisheriges Skript anschaue, habe ich das Gefühl, dass ich mir Verweise auf die Hilfedatei in der Regel ersparen kann. Ist das für Dich in Ordnung?

Alsdann: Bitte das aktuelle Skript.
Remaining with AHK 1.1.25.02 until v2 will become beta.
Fresh Janine
Posts: 29
Joined: 07 May 2017, 10:15

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

12 Oct 2017, 12:47

Oh, sorry, ich war heute viel unterwegs. Ich hatte nur auf Grund deiner Hinweise die Kleinigkeiten verändert:
Analyse01.ahk
(4.95 KiB) Downloaded 4 times

Ja, die Verweise auf die Hilfedatei kannst du dir in der Regel ersparen. Naja und meine Fähigkeiten in Visual C# ist ähnlich wie bei Autohotkey. Recht bescheiden. Ansonsten freu ich mich, dass du so bist, wie du bist :)
just me
Posts: 4685
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Txt-Datei auslesen und Teile davon im Gui anzeigen

13 Oct 2017, 03:35

OK, der erste Schritt.

  • Ich habe ein Objekt MT4_Instanzen eingebaut, das für die unterschiedlichen MT4-Instanzen die Namen der INI- und der Log-Dateien verwaltet. Beim Start des Skripts wird geprüft, ob die alle da sind. Die Liste für das DDL wird dabei generiert.
  • Im GUI-Bereich habe ich den übrigen ListViews Namen verpasst und dem DDL einen Namen und ein Label (NewIni:). Über dieses Label werden die Aktionen gesteuert, die beim Wechsel der Instanz erforderlich sind. Die ListViews im ersten Tab werden beim Start des Skripts nicht mehr gefüllt.
  • Ich habe den Aufbau des IniObjects geändert (siehe NewIni:). Zur Zeit enthalten die INI-Dateien ja nur Sektionen, zu denen jeweils eine Zeile mit Werten gehört, und ich denke, das kann auch so bleiben. Darum kann meiner Meinung nach der Sektionsname direkt als Schlüssel genutzt werden, dem als Wert die komplette Wertezeile zugewiesen wird. Das macht auch die spätere Bearbeitung einfacher.

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus


Über das Thema 'Bezahlung' können wir uns unterhalten, wenn Du mit dem Skript zufrieden bist. Der AutoHotkey Foundation enstehen ja für den Betrieb dieses Forums laufende Kosten. Eine Spende mag da hilfreich sein. Mit einer kommerziellen Weiterverwertung des Skripts bin ich aber unter keinen Umständen einverstanden.

Wenn das bisher OK ist, mach mal einen Vorschlag, womit es weitergehen soll.
Remaining with AHK 1.1.25.02 until v2 will become beta.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 1 guest