Seite 1 von 1

Auslesen einer TXT Datei

Verfasst: 20.03.2006 20:08
von winduff
Hallo Leute!

Ich bräuchte bitte hilfe, eine TXT Datei auszulesen, und bestimmte Teile in Strings aufteilen.

Ich habe versucht dies mittels der Stringfunktionen zu lösen, aber irgendwie komme ich nicht vorran. Ich hoffe jemand kann mir helfen:

Die TextDatei:

Code: Alles auswählen

+OK 1479 octets
Return-path: <chris@webmaster-elite.de>
Delivery-date: Mon, 20 Mar 2006 17:47:41 +0100
Received: by server030.webpack.hosteurope.de running Exim 4.51 using esmtp
	from pi.mc1.hosteurope.de ([80.237.128.239])
	id 1FLNXh-0008SX-NS; Mon, 20 Mar 2006 17:47:41 +0100
Received: by pi.mc1.hosteurope.de running Exim 4.60 using esmtp
	from server030.webpack.hosteurope.de ([80.237.130.38])
	id 1FLNXh-0005Ww-HY
	for mahnung@webmaster-elite.de; Mon, 20 Mar 2006 17:47:41 +0100
Received: by server030.webpack.hosteurope.de running Exim 4.51 using esmtpa
	from u9d29.u.pppool.de ([89.56.157.41] helo=[127.0.0.1])
	id 1FLNXh-0008SB-9e; Mon, 20 Mar 2006 17:47:41 +0100
Message-ID: <441EDCA9.40506@webmaster-elite.de>
Date: Mon, 20 Mar 2006 17:47:37 +0100
From: Christopher Higgs <chris@webmaster-elite.de>
User-Agent: Thunderbird 1.5 (Windows/20051201)
MIME-Version: 1.0
To:  mahnung@webmaster-elite.de
Subject: [#10004] Blubbi Mc. Blub lol
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit
X-HE-Spam-Level: /
X-HE-Spam-Score: -0.0
X-HE-Spam-Report: Content analysis details:   (-0.0 points)
	pts rule name              description
	---- ---------------------- --------------------------------------------------
	-0.0 NO_RELAYS              Informational: message was not relayed via SMTP
Envelope-to: mahnung@webmaster-elite.de
X-NAS-Language: German
X-NAS-Bayes: #0: 3.0707E-006; #1: 0.999997
X-NAS-Classification: 0
X-NAS-MessageID: 125
X-NAS-Validation: {7F72F756-47AF-43AA-99D9-A8C676F1DB7F}

Blubblublub und nochma blub

Mit freundlichen Grüßen
 lol
Ich bräuchte die folgenden Teile aus dem eMail-Header:

Betreff, Sender, Datum und die eigentliche Nachricht - wobei ich keine ahnung hab wie ich diese anzeige da es ja mehrere Zeilen sind....

Ich danke euch im Vorraus, und hoffe ich bin keine Nervensäge :-)

Liebe Grüße
Chris

Verfasst: 21.03.2006 08:43
von HeX0R

Code: Alles auswählen

Global Sender.s, Date.s, Subject.s, Daten.s

Procedure GetMailData(File$)
	
	DatenStart = #False
	
	If File$
		FileID     = ReadFile(#PB_Any, File$)
	
		If FileID
			While Eof(FileID) = 0
				a$ = ReadString(FileID)
				If Left(LCase(a$), 6) = "from: "
					Sender = Right(a$, Len(a$) - 6)
				ElseIf Left(LCase(a$), 6) = "date: "
					Date = Right(a$, Len(a$) - 6)
				ElseIf Left(LCase(a$), 9) = "subject: "
					Subject = Right(a$, Len(a$) - 9)
				ElseIf Trim(a$) = "" And DatenStart = #False
					DatenStart = #True
					Daten      = ""
				ElseIf DatenStart
					Daten + a$ + #CRLF$
				EndIf
			Wend
			CloseFile(FileID)
		EndIf
	EndIf
	
EndProcedure

GetMailData(OpenFileRequester("Select Mail File", "mail.txt", "", 0))
Debug "Sender:" + Sender
Debug "Datum:" + Date
Debug "Betreff:" + Subject
Debug "Mail:" + Daten

(PB4 für PB3.94 musst halt minimal ändern)

Verfasst: 21.03.2006 13:27
von winduff
viiiiiiiiiiiiiielen dank werds gleich testen :allright:

Liebe Grüße

Chris

Verfasst: 21.03.2006 13:54
von winduff
Eine weitere bitte hätte ich...

im Betreff ist eine Zahl angegeben (bsp.: [#10001])

Kann ich diese Zahl auslesen? Also alles was in [] steht müsste ich wiedergeben können...

Liebe Grüße
Chris :allright:

Verfasst: 21.03.2006 14:35
von AND51
Hallo Christopher, so kannst du die Zahl auslesen:

Code: Alles auswählen

Procedure.l Zahl(Datei.s)
	Protected file.l, temp.s
	file.l=ReadFile(#PB_Any, Datei)
	While file And Eof(file) = 0
		temp.s=ReadString()
		If FindString(temp, "Subject: ", 1)
			CloseFile()
			ProcedureReturn Val(Mid(temp, FindString(temp, "[", 1)+2, FindString(temp, "]", 1)-FindString(temp, "[", 1)-2))
		EndIf
	Wend
	ProcedureReturn 0
EndProcedure
Geschrieben in und erfolgreich getestet mit PB 3.94.
Der Rückgabewert dieser Procedure ist ein Long-Wert, d. h. eine Zahl. Wenn die Zahl nicht gefunden werden konnte, wird 0 zurückgegeben, nützlich für If/Else Abfragen.

Diese Procedure ist DefType-sicher und sicher vor globalen Variablen. In der Zeile Subject: dürfen auch mehrere [ und ] vorkommen, dieser Code orientiert sich an den ersten vorkommenden Zeichen.

Verfasst: 21.03.2006 14:50
von HeX0R
...und wieso durchsuchst du nochmal die ganze Datei, wenns nur um das geht, was bereits in Subject.s steht ?

Verfasst: 21.03.2006 14:54
von AND51
Habe deinen Code nicht sofort überblicken können (sicherlich, weil ich grad zu faul war... ;-) ), aber sonst ist es ja nicht so schlimm. Dann schreibt er die Procedure halt um, sodass er auf dein Subject.s zugreift...

Verfasst: 21.03.2006 14:56
von winduff
Jup, bisl umgeschrieben :-)

Hab keine ahnung wie ich euch danken soll, bin sehr bald am ende des schwierigsten teils meines Programms, was ich dann hier präsentiere ;-)

Verfasst: 25.03.2006 16:09
von sen-me
-.-
sieht euch mal findstring, mid / left / right an
dann könnt ihr mit etwas überlegen alle fragen beantworten