Meldungscodes in Meldungen wandeln...

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Meldungscodes in Meldungen wandeln...

Re: Meldungscodes in Meldungen wandeln...

Post by fredchf » 17 Oct 2013, 06:41

Re: Meldungscodes in Meldungen wandeln...

Post by Alibaba » 17 Oct 2013, 05:32

So hier:

Code: Select all

Meldungen := Object()
FileRead, file, test.ini
Loop, Parse, file, `n`r, %A_Space%%A_Tab%
{
        pos := InStr(A_LoopField, "=")
	if (!pos or (SubStr(A_LoopField, 1, 1) = "["))
		continue
	Meldungen[SubStr(A_LoopField, 1, pos - 1)] := SubStr(A_LoopField, pos + 1)
}
MsgBox % print_r(Meldungen)
ExitApp




;---- print_r() by SAPlayer ----

print_r(input){
   output := ""
   if(!IsObject(input))
      return input
   this := input
   tabs := ""
   ThisArray:
   if(IsObject(this)){
      output .= "Array`n" tabs "(`n"
      tabs .= "`t"
      for i, k in this
      {
         if(IsObject(k)){
            this := k
            output .= tabs "[" i "] => "
            gosub ThisArray
         }
         else
            output .= tabs "[" i "] => " k "`n"
      }
      tabs := SubStr(tabs, 1, -1)
      output .= tabs ")`n"
   }
   return Trim(output, "`n")
}

Re: Meldungscodes in Meldungen wandeln...

Post by fump2000 » 17 Oct 2013, 03:46

Okay das rennt :)

Noch eine Frage.
Wie erstell ich ein Array mit Werten aus einer INI?

Wenn ich also eine INI habe:
[Meldungen]
9760=Service ABC gebucht

usw.

Das geht doch auch per Parsen oder? Kannst du mir da bitte ein Beispiel geben?

Danke!

Re: Meldungscodes in Meldungen wandeln...

Post by nnnik » 17 Oct 2013, 03:20

Da musst du dann mit RegExReplace arbeiten:

Code: Select all

For Code,Replacement in Meldungen
XMLKomplett:=RegExReplace(XMLKomplett,"m)^.*" Code ".*$",Replacement)

Re: Meldungscodes in Meldungen wandeln...

Post by fump2000 » 17 Oct 2013, 02:33

Hi nnnik!

Danke für deinen Input, wenn ich das so umsetze schaut das Ergebnis so aus:

Code: Select all

RFF+FSC:Service ABC gebucht'
LIN+++NETWORK DATA'
RFF+FSF:BEC::1'
LIN+++PRODUCT DATA'
RFF+AS'
RFF+FSC:Produkt 123 gebucht'
LIN+++NETWORK DATA'
RFF+FSF:Sperre 2222 aktiv::0'
LIN+++NETWORK DATA'
Wie bekommt man es so hin das all das was keine Übereinstimmung hat gelöscht wird und das vor und nach der Übereinstimmung ebenfalls entfernt wird?

Am Ende sollte es halt so aussehen:
Service ABC gebucht
Produkt 123 gebucht
Sperre 2222 aktiv

Re: Meldungscodes in Meldungen wandeln...

Post by nnnik » 17 Oct 2013, 00:57

Du könntest den Loop auch weglassen.
Wirklich wichtig ist nur, dass du per For Loop alle Ersetzungen durchgehst:

Code: Select all

For Code,Replacement in Meldungen
StringReplace,XMLKomplett,XMLKomplett,%Code%,%Replacement%,1

Meldungscodes in Meldungen wandeln...

Post by fump2000 » 16 Oct 2013, 17:33

Hallo zusammen,

in unserem Arbeitsalltag gehören XMLs von verschiedenen Anbietern. Diese beinhalten immer nur Meldungscodes die aber auch alle eine eigentliche bedeutung haben. Sowas sieht z.B. so aus:

Code: Select all

LIN+++PRODUCT DATA'
RFF+AS'
RFF+FSC:9760'
LIN+++NETWORK DATA'
RFF+FSF:BEC::1'
LIN+++PRODUCT DATA'
RFF+AS'RFF+FSC:9763'
LIN+++NETWORK DATA'
RFF+FSF:T21::0'
LIN+++NETWORK DATA'
RFF+FSF:T22::0'
LIN+++NETWORK DATA'
RFF+FSF:T62::1'
LIN+++PRODUCT DATA'
RFF+AS'RFF+FSC:9760'
Nun möchte ich gerne das ganze lesbar machen... also die Codes wie z.B. 9760 oder 9763 oder T21 entsprechend umwandeln.

Ich dachte mir, ich erstelle ein Array mit allen Codes und dessen Text. Sieht dann so aus:

Code: Select all

Meldungen:={"9760":"Service ABC gebucht","9763":"Produkt 123 gebucht","T21":"Sperre 2222 aktiv"}
Ablauf wäre dann wohl 1. Kopieren des kompletten XML 2. Parsen... 3. Ergbenis ausgeben

Beim Parsen hab ich probleme. Ich weiß da grad nicht wie ich anfangen muss.

Wenn ich also in der Var "XMLKomplett" das XML habe und es parsen will dann so:

Code: Select all

Loop, parse, XMLKomplett, % "'"
Nur wie gehts dann weiter?

Wenn ich nun im A_LoopField diesen Text habe: "RFF+FSC:9760'"
Wie bekomm ich dann einen Abgleich mit dem Array hin und erhalten entsprechend das Ergebnis?

Oder sollte man an sowas ganz anders ran gehen?

Für Erklärungen bin ich wie immer sehr Dankbar!

MfG
fump

Top