Xojo Conferences
XDCMay2019MiamiUSA

Richtig auslesen, aber wie? (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: RSI - was ist das?
Next thread: Virtual volume


AW: Bermerkungen in Bildern auslesen   -   Ubr Werner
  Richtig auslesen, aber wie?   -   Marco Weinrich
   Re: Richtig auslesen, aber wie?   -   Andreas Sander
    Re: Richtig auslesen, aber wie?   -   Marco Weinrich
     Re: Richtig auslesen, aber wie?   -   Andreas Sander
      Re: Richtig auslesen, aber wie?   -   Andy Fuchs
       Re: Richtig auslesen, aber wie?   -   Marco Weinrich
        Re: Richtig auslesen, aber wie?   -   Andy Fuchs
         Re: Richtig auslesen, aber wie?   -   Marco Weinrich
          Re: Richtig auslesen, aber wie?   -   Claudius Sailer
       Re: Richtig auslesen, aber wie?   -   Dietmar Plassmann
        Re: Richtig auslesen, aber wie?   -   Andy Fuchs
   Re: Richtig auslesen, aber wie?   -   Torsten Gutsche
    Re: Richtig auslesen, aber wie?   -   Marco Weinrich

Richtig auslesen, aber wie?
Date: 30.05.03 09:32 (Fri, 30 May 2003 10:32:28 +0200)
From: Marco Weinrich
Hallo Liste,

brauche einen Schubs in die richtige Richtung. Ich habe eine Textdatei, aus
der ich 3 bestimmte Werte rausfiltern möchte. Der Text besteht aus sehr
vielen Absätzen, in denen jeweils diese 3 Werte vorkommen.

Bis jetzt lese ich die Datei zeilenweise mit instr aus. Später soll es so
aussehen:

Wert1 chr(9) Wert2 chr(9) Wert3 chr(13)


Das auslesen läuft so:

do
b=t.readLine
z=len(b)-35
if instr(b, "Wert1") > 0 then
w1=mid(b,27,z)
end if

z=len(b)-37
if instr(b, "Wert2") > 0 then
w2=mid(b,29,z)
end if

z=len(b)-40
if instr(b, "Wert3") > 0 then
if wert3 > 0 then
w3=mid(b,29,z)
end if

ta.writeline w1+chr(9)+w2+chr(9)+w3

w1=""
w2=""
w3=""

loop until t.eof

Das klappt auch so, wenn alle 3 Werte vorkommen, wenn aber nur Wert1 und
Wert3 vorkommt, soll der fehlende Wert2 durch chr(9) ergänzt werden, damit
die Tabelle später noch stimmt. Bis jetzt macht er bei den Zeilen, in den
Wert2 nicht vorkommt, immer noch ein tab und ein return (logisch).

Wie gehe ich da am besten vor?

Gruß Marco

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 10:30 (Fri, 30 May 2003 11:30:40 +0200)
From: Andreas Sander
Könntest du mal ein Beispieltext senden?

Andy

Am Freitag, 30.05.03, um 10:32 Uhr (Europe/Berlin) schrieb Marco
Weinrich:

> Hallo Liste,
>
> brauche einen Schubs in die richtige Richtung. Ich habe eine
> Textdatei, aus
> der ich 3 bestimmte Werte rausfiltern möchte. Der Text besteht aus sehr
> vielen Absätzen, in denen jeweils diese 3 Werte vorkommen.
>
> Bis jetzt lese ich die Datei zeilenweise mit instr aus. Später soll es
> so
> aussehen:
>
> Wert1 chr(9) Wert2 chr(9) Wert3 chr(13)
>
> Das auslesen läuft so:
>
> do
> b=t.readLine
> z=len(b)-35
> if instr(b, "Wert1") > 0 then
> w1=mid(b,27,z)
> end if
>
> z=len(b)-37
> if instr(b, "Wert2") > 0 then
> w2=mid(b,29,z)
> end if
>
> z=len(b)-40
> if instr(b, "Wert3") > 0 then
> if wert3 > 0 then
> w3=mid(b,29,z)
> end if
>
> ta.writeline w1+chr(9)+w2+chr(9)+w3
>
> w1=""
> w2=""
> w3=""
>
> loop until t.eof
>
> Das klappt auch so, wenn alle 3 Werte vorkommen, wenn aber nur Wert1
> und
> Wert3 vorkommt, soll der fehlende Wert2 durch chr(9) ergänzt werden,
> damit
> die Tabelle später noch stimmt. Bis jetzt macht er bei den Zeilen, in
> den
> Wert2 nicht vorkommt, immer noch ein tab und ein return (logisch).
>
> Wie gehe ich da am besten vor?
>
> Gruß Marco
>
> - - - - - - - - - -
> For list commands, send "Help" in the body of a message to
> <<email address removed>>

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 10:49 (Fri, 30 May 2003 11:49:39 +0200)
From: Marco Weinrich
Am 30.05.2003 11:30 Uhr schrieb "Andreas Sander" unter <<email address removed>>:

> Könntest du mal ein Beispieltext senden?
>
>

Hallo Andy,
Hintergrund der Geschichte ist der export einer Playlist in xml aus Itunes,
für den ich meinen eigenen Filter schreiben möchte.

Hier ein Beispiel:

<key>Track ID</key><integer>252</integer>
<key>Name</key><string>Back In Black</string>
<key>Artist</key><string>AC/DC</string>
<key>Album</key><string>Back In Black</string>
<key>Genre</key><string>Rock</string>
<key>Kind</key><string>MPEG-Tondatei</string>
<key>Size</key><integer>5120603</integer>
<key>Total Time</key><integer>255921</integer>
<key>Track Number</key><integer>6</integer>
<key>Track Count</key><integer>10</integer>
<key>Year</key><integer>1980</integer>
<key>Date Modified</key><date>2003-01-10T09:24:40Z</date>
<key>Date Added</key><date>2003-05-27T10:52:58Z</date>
<key>Bit Rate</key><integer>160</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>File Type</key><integer>1297106739</integer>
<key>File Creator</key><integer>1752133483</integer>

für jedes Lied der Playlist werden diese Elemente angelegt, und es kann eben
sein, das ein Song eben kein "Artist"-Element hat...

Will eben mit checkboxes die Sachen ankreuzen, die ich rausgefiltert haben
möchte, mit tabs getrennt, und wenn es eine Element nicht gibt, dann soll an
der Stelle ein Tab stehen, damit die Tabelle stimmt.

Anmerkung: ich kann das alles auch anders lösen (xml-parser), aber für mich
soll das eben auch eine Übung sein, es alternativ über die Art zu filtern.

Danke

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 11:03 (Fri, 30 May 2003 12:03:35 +0200)
From: Andreas Sander

Am Freitag, 30.05.03, um 11:49 Uhr (Europe/Berlin) schrieb Marco
Weinrich:
> für jedes Lied der Playlist werden diese Elemente angelegt, und es
> kann eben
> sein, das ein Song eben kein "Artist"-Element hat...
>
> Will eben mit checkboxes die Sachen ankreuzen, die ich rausgefiltert
> haben
> möchte, mit tabs getrennt, und wenn es eine Element nicht gibt, dann
> soll an
> der Stelle ein Tab stehen, damit die Tabelle stimmt.
>
> Anmerkung: ich kann das alles auch anders lösen (xml-parser), aber für
> mich
> soll das eben auch eine Übung sein, es alternativ über die Art zu
> filtern.
>

Also ich würde es über den xml-Parser machen (und Andy Fuchs
wahrscheinlich erst recht, da er ja nie Zeit hat :-)).
Aber wenn du es zu Fuß machen willst, dann würde ich es anders machen.
Jeder Eintrag steht zwischen einem dictionary, so daß du einfach die
einzelnen dictionarys liest und innerhalb dieses Strings suchst.
Das geht mit regulären Ausdrücken auch ganz wunderbar (oder mit Perl
unter OSX), aber du bist ja an einer reinen RB-Lösung interessiert.

Andy

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 11:23 (Fri, 30 May 2003 12:23:07 +0200)
From: Andy Fuchs
at 30.05.2003 12:03 Uhr, Andreas Sander wrote:

> Also ich würde es über den xml-Parser machen (und Andy Fuchs
> wahrscheinlich erst recht, da er ja nie Zeit hat :-)).

Gut gebrüllt, Löwe! ;-)

Allerdings gibt es noch einen anderen Grund:
Eine Anleitung, ein XML-Dokument zeilenweise auszulesen kommt einer
Anleitung zum Fahren mit verbundenen Augen gleich, da das XML-Dokument nicht
zwangsläufig zeilenweise abgelegt werden muss (und meistens auch nicht wird)
und deshalb schlicht und ergreifend totaler Blödsinn ist.

-- Andy Fuchs
-- silent movie media
-- mailto:<email address removed>
-- http://www.silent-movie-media.com

-------------------------------------

Helfende Hand benötigt? -> Im August hätte ich noch Zeit...
Need some helping hand? -> I'm free in August...


- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 11:49 (Fri, 30 May 2003 12:49:34 +0200)
From: Marco Weinrich
Am 30.05.2003 12:23 Uhr schrieb "Andy Fuchs" unter <<email address removed>>:

> Eine Anleitung, ein XML-Dokument zeilenweise auszulesen kommt einer
> Anleitung zum Fahren mit verbundenen Augen gleich, da das XML-Dokument nicht
> zwangsläufig zeilenweise abgelegt werden muss (und meistens auch nicht wird)
> und deshalb schlicht und ergreifend totaler Blödsinn ist.

Lieber Andy Fuchs,
das es in diesem Fall ne xml-Datei war, ist Zufall. Es kann genause gut eine
Textdatei sein. Das Problem wäre dann das selbe, es geht ja auch nur um die
Lösung, wie man sowas "per Hand" (in dem Fall zeilenweise) machen kann.

Ich hätte auch schreiben können, ich suche in jeder Zeile einer Textdatei
nach den Worten "eins", "zwei" und "drei", und wenn es "zwei" nicht gibt,
dann soll an die stelle ein Tab...

Eigentlich hatte ich nur auf einen Tipp gehofft, wie man sowas anstellen
kann. ;)

Gruß Marco

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 12:55 (Fri, 30 May 2003 13:55:22 +0200)
From: Andy Fuchs
at 30.05.2003 12:49 Uhr, Marco Weinrich wrote:

> Ich hätte auch schreiben können, ich suche in jeder Zeile einer Textdatei
> nach den Worten "eins", "zwei" und "drei", und wenn es "zwei" nicht gibt,
> dann soll an die stelle ein Tab...

Sowas in der Art? (Achtung, nur schnell hingeschmiert... du weisst ja: wenig
Zeit :-))

Function Findwert(welcherWert as string, meineZeile as string) As String
dim stringPos as integer

stringPos = InstrB(meineZeile,welcherWert)

if (stringPos >0) then
return midB(meineZeile,stringPos + len(welcherWert) + 1,4)
end if

return chr(9)

End Function

-- Andy Fuchs
-- silent movie media
-- mailto:<email address removed>
-- http://www.silent-movie-media.com

-------------------------------------

Helfende Hand benötigt? -> Im August hätte ich noch Zeit...
Need some helping hand? -> I'm free in August...


- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 13:56 (Fri, 30 May 2003 14:56:42 +0200)
From: Marco Weinrich
Am 30.05.2003 13:55 Uhr schrieb "Andy Fuchs" unter <<email address removed>>:

> Sowas in der Art? (Achtung, nur schnell hingeschmiert... du weisst ja: wenig
> Zeit :-))
>
>
> Function Findwert(welcherWert as string, meineZeile as string) As String
> dim stringPos as integer
>
> stringPos = InstrB(meineZeile,welcherWert)
>
> if (stringPos >0) then
> return midB(meineZeile,stringPos + len(welcherWert) + 1,4)
> end if
>
> return chr(9)
>
> End Function

Das Problem hier ist nur, das er auch ein chr(9) zurückgibt, wenn weder
"eins", "zwei" oder "drei" vorkommt, das will ich ja eben nicht.

Wenn "eins" gefunden, dann
eins(tab)

wenn "zwei" gefunden, dann
eins(tab)zwei

wenn "drei" gefunden, dann
eins(tab)zwei(tab)drei

wenn z.b. "zwei" NICHT gefunden, dann
eins(tab)(tab)drei

wenn keins der 3 worte, dann NICHTS


habe mich ehrlich gesagt auch ziemlich kompliziert ausgedrückt, sorry..

Marco

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 15:40 (Fri, 30 May 2003 16:40:11 +0200)
From: Claudius Sailer
Am Freitag, 30.05.03 um 14:56 Uhr schrieb Marco Weinrich:

> Das Problem hier ist nur, das er auch ein chr(9) zurückgibt, wenn weder
> "eins", "zwei" oder "drei" vorkommt, das will ich ja eben nicht.
>
> Wenn "eins" gefunden, dann
> eins(tab)
>
> wenn "zwei" gefunden, dann
> eins(tab)zwei
>
> wenn "drei" gefunden, dann
> eins(tab)zwei(tab)drei
>
> wenn z.b. "zwei" NICHT gefunden, dann
> eins(tab)(tab)drei
>
> wenn keins der 3 worte, dann NICHTS
>
> habe mich ehrlich gesagt auch ziemlich kompliziert ausgedrückt, sorry..

Einmal ohne Code

Function StringHacker(InputString as string) string

If
Instr(InputString,"Eins")+Instr(INputString,"Zwei")+Instr(InputString,"D
rei")=0 then
return ""
elseif Instr(InputString,"Eins")<>0 AND Instr(INputString,"Zwei")<>0
AND Instr(InputString,"Drei")=0 then
return "Eins" +chr(9)+"Zwei"+chr(9)+"Drei"
elseif Instr(InputString,"Eins")<>0 AND Instr(INputString,"Zwei")=0 AND
Instr(InputString,"Drei")=0 then
return "Eins" +chr(9)+chr(9)+"Drei"
endif

end function

etc etc etc

Ciao

Claudius

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 12:57 (Fri, 30 May 2003 13:57:48 +0200)
From: Dietmar Plassmann
Marco Weinrich <<email address removed>> wrote:

>Eigentlich hatte ich nur auf einen Tipp gehofft, wie man sowas
>anstellen kann. ;)

Regular Expressions, für sowas wurden sie entwickelt :-)

Dietmar

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 13:09 (Fri, 30 May 2003 14:09:33 +0200)
From: Andy Fuchs
at 30.05.2003 13:57 Uhr, Dietmar Plassmann wrote:

> Regular Expressions, für sowas wurden sie entwickelt :-)

Hi Dietmar,

er wollts aber von HAND machen... ;-)

-- Andy Fuchs
-- silent movie media
-- mailto:<email address removed>
-- http://www.silent-movie-media.com

-------------------------------------

Helfende Hand benötigt? -> Im August hätte ich noch Zeit...
Need some helping hand? -> I'm free in August...


- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 10:45 (Fri, 30 May 2003 11:45:53 +0200)
From: Torsten Gutsche
Am 30.05.2003 10:32 Uhr schrieb "Marco Weinrich" unter <<email address removed>>:

> Hallo Liste,
>
> brauche einen Schubs in die richtige Richtung. Ich habe eine Textdatei, aus
> der ich 3 bestimmte Werte rausfiltern möchte. Der Text besteht aus sehr
> vielen Absätzen, in denen jeweils diese 3 Werte vorkommen.
>
> Bis jetzt lese ich die Datei zeilenweise mit instr aus. Später soll es so
> aussehen:
>
> Wert1 chr(9) Wert2 chr(9) Wert3 chr(13)
>
>
> Das auslesen läuft so:
>
> do
> b=t.readLine
> z=len(b)-35
> if instr(b, "Wert1") > 0 then
> w1=mid(b,27,z)
> end if
>
> z=len(b)-37
> if instr(b, "Wert2") > 0 then
> w2=mid(b,29,z)
> end if
>
> z=len(b)-40
> if instr(b, "Wert3") > 0 then
> if wert3 > 0 then
> w3=mid(b,29,z)
> end if
>
> ta.writeline w1+chr(9)+w2+chr(9)+w3
>
> w1=""
> w2=""
> w3=""
>
> loop until t.eof
>
>
> Das klappt auch so, wenn alle 3 Werte vorkommen, wenn aber nur Wert1 und
> Wert3 vorkommt, soll der fehlende Wert2 durch chr(9) ergänzt werden, damit
> die Tabelle später noch stimmt. Bis jetzt macht er bei den Zeilen, in den
> Wert2 nicht vorkommt, immer noch ein tab und ein return (logisch).
>
> Wie gehe ich da am besten vor?
>
> Gruß Marco
>
Hallo,

Geht es um ein zusätzliches chr(9)? Wenn ja, warum fügst Du nicht einfach
ein "else" zu Deiner Instr-Abfrage hinzu, ungefähr so:

z=len(b)-37
if instr(b, "Wert2") > 0 then
w2=mid(b,29,z)
else
w2=chr(9)
end if

Vielleicht ist das aber völliger Mist (meinerseits) ;)

Gruß

Torsten

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>

Re: Richtig auslesen, aber wie?
Date: 30.05.03 11:13 (Fri, 30 May 2003 12:13:44 +0200)
From: Marco Weinrich
Am 30.05.2003 11:45 Uhr schrieb "Torsten Gutsche" unter
<<email address removed>>:

> z=len(b)-37
> if instr(b, "Wert2") > 0 then
> w2=mid(b,29,z)
> else
> w2=chr(9)
> end if
>
> Vielleicht ist das aber völliger Mist (meinerseits) ;)


Weil er dann bei allen Zeilen, in denen Wert1, Wert2 oder Wert3 nicht
vorkommt dafür ein Tab macht... soll er aber nicht. Dann habe ich hunderte
Zeilen, in denen nur tab+return steht.

Marco

- - - - - - - - - -
For list commands, send "Help" in the body of a message to
<<email address removed>>