Auslesen einer TXT Datei

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Auslesen einer TXT Datei

Beitrag 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
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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)
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

viiiiiiiiiiiiiielen dank werds gleich testen :allright:

Liebe Grüße

Chris
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag 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:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

...und wieso durchsuchst du nochmal die ganze Datei, wenns nur um das geht, was bereits in Subject.s steht ?
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag 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 ;-)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

-.-
sieht euch mal findstring, mid / left / right an
dann könnt ihr mit etwas überlegen alle fragen beantworten
Bild
Antworten