Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Parse Ergebnis mit Zeilenumbruch und Formatierung?

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
quantum



Anmeldedatum: 19.06.2008
Beiträge: 29

BeitragVerfasst am: So Jun 29, 2008 10:45 pm    Titel: Parse Ergebnis mit Zeilenumbruch und Formatierung? Antworten mit Zitat

Hallo.

wie bekomme ich beim Parse Ergenis einen Zeilenumbruch hin bzw. kann ich den bereits in der zu parsenden Zeile vorgeben?

Beispiel der Zeile:
Äpfel|1 Pfund|Liefern= 2,38 Euro (Sonderpreis bei Abholung 1,98 Euro)

Die Ausgabe sollte aber so aussehen:

2,38 Euro
(Sonderpreis bei Abholung 1,98 Euro)

Die Abfrage sieht z.Z. so aus:
Code:
#NoEnv
Gui, Margin, 10, 10


Gui, Add, DropDownList, x10 y10 w70 h100 vDDL1 , Äpfel||Birnen|Pflaumen

Gui, Add, DropDownList, x10 y40 w70 h100 vDDL2 , 1 Pfund||2 Pfund|3 Pfund

Gui, Add, DropDownList, x10 y70 w70 h100 vDDL3 , Liefern||Abholung

Gui, Add, Edit, x90 y10 w170 h80 +ReadOnly vAusgabe,

Gui, Add, Button, x10 y100 w70 h30 gBerechnen, Berechnen


Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro (Sonderpreis bei Abholung 1,98 Euro)
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro (Sonderpreis bei Abholung 1,98 Euro)
)

Gui, Show, , Quantum
Return

; Berechnungbereich
Berechnen:
Gui, Submit, Nohide
Farbe := Farbe%RBG%
Eingabe = %DDL1%|%DDL2%|%DDL3%
; Standardausgabe
Ausgabe = Unbekannt!
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      Ausgabe = %T2%
      Break
   }
}
GuiControl, ,Ausgabe, %Ausgabe%
Return

GuiClose:
GuiEscape:
ExitApp

Kann mir einer von euch Chracks helfen?

Vielen Dank und Gruss,
Quantum


Zuletzt bearbeitet von quantum am Mo Jul 07, 2008 12:04 am, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1088
Wohnort: Berlin

BeitragVerfasst am: Mo Jun 30, 2008 6:51 am    Titel: Antworten mit Zitat

Moin,

z.B. so:
Code:
;...
Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro|(Sonderpreis bei Abholung 1,98 Euro)
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro|(Sonderpreis bei Abholung 1,98 Euro)
)
;...
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringReplace, Ausgabe, T2, |, `n, All
      Break
   }
}

_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
quantum



Anmeldedatum: 19.06.2008
Beiträge: 29

BeitragVerfasst am: Mo Jun 30, 2008 7:17 am    Titel: Antworten mit Zitat

denick hat Folgendes geschrieben:
Moin,

z.B. so:
Code:
;...
Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro|(Sonderpreis bei Abholung 1,98 Euro)
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro|(Sonderpreis bei Abholung 1,98 Euro)
)
;...
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringReplace, Ausgabe, T2, |, `n, All
      Break
   }
}

Hallo (de)nick,

vielen Dank. Genau das habe ich gesucht.

Kurze Frage noch. Wie müßte das in diesem Beispiel aussehen?
Code:
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringSplit, V, T2, |
      Ausgabe = %V1%
      HF := %V2%
      SF := %V3%
      Break
   }
}



Gruss, Quantum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick (n-l-i)
Gast





BeitragVerfasst am: Mo Jun 30, 2008 11:52 am    Titel: Antworten mit Zitat

In diesem Beispiel ist das | als Trennzeichen schon verbraucht. Für die Trennung innerhalb des ersten Teils musst Du Dir deshalb irgendein anderes Zeichen aussuchen, das in den Texten sonst nicht vorkommt, und es mit `n replacen.
Nach oben
quantum



Anmeldedatum: 19.06.2008
Beiträge: 29

BeitragVerfasst am: Mo Jun 30, 2008 3:12 pm    Titel: Antworten mit Zitat

denick (n-l-i) hat Folgendes geschrieben:
In diesem Beispiel ist das | als Trennzeichen schon verbraucht. Für die Trennung innerhalb des ersten Teils musst Du Dir deshalb irgendein anderes Zeichen aussuchen, das in den Texten sonst nicht vorkommt, und es mit `n replacen.

Vielen Dank (de)nick,

habe ich verstanden und es funzt gut.

Gruss, Quantum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
quantum



Anmeldedatum: 19.06.2008
Beiträge: 29

BeitragVerfasst am: Mo Jul 07, 2008 12:03 am    Titel: Antworten mit Zitat

denick (n-l-i) hat Folgendes geschrieben:
In diesem Beispiel ist das | als Trennzeichen schon verbraucht. Für die Trennung innerhalb des ersten Teils musst Du Dir deshalb irgendein anderes Zeichen aussuchen, das in den Texten sonst nicht vorkommt, und es mit `n replacen.

Hallo (de)nick,

du hast mir ja bei dieser Geschichte mit dem Zeilenumbruch klasse geholfen.

Gibt es eigentlich die Möglichkeit, in dem zu parsenden Text Text-Formatierungen
vorzunehmen, die er dann auch im Editfeld darstellen kann?

Also, so sieht die Abzufragende Zeile momentan aus:
(Kompletter Code ganz unten)

Code:
Äpfel|1 Pfund|Liefern= 2,38 Euro#(Sonderpreis bei Abholung 1,98 Euro)


Ich benutze hier um einen Zeilenumbruch zu erzeugen die Rautetaste #.
Das Script gibt mir also im Editfeld folgendes aus:

2,38
(Sonderpreis bei Abholung 1,98 Euro)

Ich möchte aber gerne bestimmte Textpassagen oder einzelne Wörter farblich
bzw. Fett hervorheben. Wie z.B:

2,38
(Sonderpreis bei Abholung 1,98 Euro)

Ist das überhaupt in einem Edit-Feld möglich oder gibt es da andere Möglichkeiten?

Code:
#NoEnv
; ##############################################################################
; Vorbelegung für Variablen
; ##############################################################################
; ------------------------------------------------------------------------------
; zu parsende Daten
; Für einen Zeilenumbruch im Ausgabe Editfeld benutze ich das Rautezeichen #
Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro#(Sonderpreis bei Abholung 1,98 Euro)
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro (Sonderpreis bei Abholung 1,98 Euro)
)
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

; ------------------------------------------------------------------------------

; ##############################################################################
; Gui
; ##############################################################################
; ------------------------------------------------------------------------------
Gui, Add, DropDownList, x10 y10 w70 h100 vWert1 , Äpfel||Birnen|Pflaumen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y40 w70 h100 vWert2 , 1 Pfund||2 Pfund|3 Pfund
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y70 w70 h100 vWert3 , Liefern||Abholung
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Edit, x90 y10 w170 h80 +ReadOnly vAusgabe,
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Button, x10 y100 w70 h30 gBerechnen, Berechnen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Show, , Auslese Test
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Subroutinen
; ##############################################################################
; ------------------------------------------------------------------------------
; Berechnungbereich
Berechnen:
Gui, Submit, Nohide
Farbe := Farbe%RBG%
Eingabe = %Wert1%|%Wert2%|%Wert3%
; Standardausgabe
Ausgabe = Unbekannt!
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringReplace, Ausgabe, T2, #, `n, All  ; #, `n, All (gibt mit # einen Zeilenumbruch aus) 
      Break
   }
}
GuiControl, ,Ausgabe, %Ausgabe%
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Programmexit
; ##############################################################################
GuiClose:
GuiEscape:
ExitApp
; ------------------------------------------------------------------------------

Vielen Dank.

Gruss, Quantum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1088
Wohnort: Berlin

BeitragVerfasst am: Mo Jul 07, 2008 5:46 am    Titel: Antworten mit Zitat

Moin,

weder Edit- noch Textfelder bieten die Möglichkeit, das Textformat innerhalb eines Feldes zu wechseln.

Im Mutterforum hat Micha eine Dll eingestellt, die auch ein RichTextfeld enthält, ich habe das aber noch nicht probiert.

Die etwas einfachere Möglichkeit wäre vielleicht, Seans IE-Control zu verwenden, den Text als HTML in eine Datei zu schreiben und diese zu laden, das macht aber auch Arbeit.

Hardliner könnten sich den Text auch aus einzelnen unterschiedlich formatierten Textfeldern zusammenwursteln. Da muss man aber mit dynamischer Größenanpassung arbeiten und immer den verfügbaren Platz im Auge behalten.

Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
quantum



Anmeldedatum: 19.06.2008
Beiträge: 29

BeitragVerfasst am: Mo Jul 07, 2008 6:13 am    Titel: Antworten mit Zitat

denick hat Folgendes geschrieben:
Moin,

weder Edit- noch Textfelder bieten die Möglichkeit, das Textformat innerhalb eines Feldes zu wechseln.

Im Mutterforum hat Micha eine Dll eingestellt, die auch ein RichTextfeld enthält, ich habe das aber noch nicht probiert.

Die etwas einfachere Möglichkeit wäre vielleicht, Seans IE-Control zu verwenden, den Text als HTML in eine Datei zu schreiben und diese zu laden, das macht aber auch Arbeit.

Hardliner könnten sich den Text auch aus einzelnen unterschiedlich formatierten Textfeldern zusammenwursteln. Da muss man aber mit dynamischer Größenanpassung arbeiten und immer den verfügbaren Platz im Auge behalten.

Wink

Hatte ich mir fast schon gedacht. Aber mir was anderes eingefallen.

Was ist, wenn ich ein zweites Edit- oder Textfeld nehme, um den Zusatztext, den ich ausgeben will, dort reinschreiben zu lassen. Dann kann ich ja dieses Feld anders Formtieren.

Also er schreibt dann den 1. Teil des Ergebnisses in Editfeld 1 und den Zusatz in Editfeld 2.

Geht das? Und wenn ja, wie teile ich dann den Parse auf?

Beispielscript:
Code:
#NoEnv
; ##############################################################################
; Vorbelegung für Variablen
; ##############################################################################
; ------------------------------------------------------------------------------
; zu parsende Daten
; Für einen Zeilenumbruch im Ausgabe Editfeld benutze ich das Rautezeichen #
Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro#(Sonderpreis bei Abholung 1,98 Euro)
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro (Sonderpreis bei Abholung 1,98 Euro)
)
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

; ------------------------------------------------------------------------------

; ##############################################################################
; Gui
; ##############################################################################
; ------------------------------------------------------------------------------
Gui, Add, DropDownList, x10 y10 w70 h100 vWert1 , Äpfel||Birnen|Pflaumen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y40 w70 h100 vWert2 , 1 Pfund||2 Pfund|3 Pfund
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y70 w70 h100 vWert3 , Liefern||Abholung
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Edit, x90 y10 w170 h30 +ReadOnly vAusgabe1,
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Edit, x90 y50 w170 h40 +ReadOnly vAusgabe2,
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Button, x10 y100 w70 h30 gBerechnen, Berechnen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Show, , Auslese Test
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Subroutinen
; ##############################################################################
; ------------------------------------------------------------------------------
; Berechnungbereich
Berechnen:
Gui, Submit, Nohide
Farbe := Farbe%RBG%
Eingabe = %Wert1%|%Wert2%|%Wert3%
; Standardausgabe
Ausgabe1 = Unbekannt!
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringReplace, Ausgabe1, T2, #, `n, All  ; #, `n, All (gibt mit # einen Zeilenumbruch aus) 
      Break
   }
}
GuiControl, ,Ausgabe1, %Ausgabe1%
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Programmexit
; ##############################################################################
GuiClose:
GuiEscape:
ExitApp
; ------------------------------------------------------------------------------


Gruss, Quantum
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1088
Wohnort: Berlin

BeitragVerfasst am: Mo Jul 07, 2008 7:18 am    Titel: Antworten mit Zitat

Moin,

so:
Code:
#NoEnv
; ##############################################################################
; Vorbelegung für Variablen
; ##############################################################################
; ------------------------------------------------------------------------------
; zu parsende Daten
; Für einen Zeilenumbruch im Ausgabe Editfeld benutze ich das Rautezeichen #
Treffer =
(
Äpfel|1 Pfund|Liefern= 2,38 Euro#Sonderpreis bei Abholung 1,98 Euro
Birnen|1 Pfund|Abholung= 2,38 Euro
Pflaumen|1 Pfund|Abholung= 2,38 Euro#Sonderpreis bei Abholung 1,98 Euro
)
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

; ------------------------------------------------------------------------------

; ##############################################################################
; Gui
; ##############################################################################
; ------------------------------------------------------------------------------
Gui, Add, DropDownList, x10 y10 w70 h100 vWert1 , Äpfel||Birnen|Pflaumen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y40 w70 h100 vWert2 , 1 Pfund||2 Pfund|3 Pfund
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, DropDownList, x10 y70 w70 h100 vWert3 , Liefern||Abholung
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Edit, x90 y10 w170 h30 +ReadOnly vAusgabe1,
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Edit, x90 y50 w170 h40 +ReadOnly vAusgabe2,
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Add, Button, x10 y100 w70 h30 gBerechnen, Berechnen
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gui, Show, , Auslese Test
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Subroutinen
; ##############################################################################
; ------------------------------------------------------------------------------
; Berechnungbereich
Berechnen:
Gui, Submit, Nohide
Farbe := Farbe%RBG%
Eingabe = %Wert1%|%Wert2%|%Wert3%
; Standardausgabe
Ausgabe1 = Unbekannt!
Ausgabe2 =
Loop, Parse, Treffer, `n, `r
{
   StringSplit, T, A_LoopField, =
   If Eingabe = %T1%
   {
      StringSplit, Ausgabe, T2, #
      Break
   }
}
GuiControl, ,Ausgabe1, %Ausgabe1%
GuiControl, ,Ausgabe2, %Ausgabe2%
Return
; ------------------------------------------------------------------------------

; ##############################################################################
; Programmexit
; ##############################################################################
GuiClose:
GuiEscape:
ExitApp
; ------------------------------------------------------------------------------


Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerRaphael



Anmeldedatum: 09.01.2008
Beiträge: 834
Wohnort: Zuhause

BeitragVerfasst am: Mo Jul 07, 2008 7:30 am    Titel: Antworten mit Zitat

FYI:

richtext edit control mit ein wenig ahk und sonst windows standard tools
http://www.autohotkey.com/forum/topic19421.html

grüße
derRaphael
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de