![]() |
Max. Zeilenlänge erreicht
Nabend zusammen,
ich habe folgendes Problem. Ich lade alle meine Emails von meinem Email Acc via POP3 runter. Diese Speicher ich in Text Dateien ab. Die Textdateien nenne ich so, wie der Titel der Mail ist. Der titel wird so gefiltert, dass keine unerlaupten Zeichen drin stehen und auch die Länge wird auf 30 Zeichen begrenzt. Dennoch wird mir bei manchen Emails ausgegeben, dass die maximale Zeilenlänge erreicht wird. Diese Zeile wird mir Rot angezeigt: mname := trim(copy(IdMessage1.Subject, 0, 30)); Aber warum? Hoffe ihr könnt mir helfen. |
AW: Max. Zeilenlänge erreicht
Muss das nicht bei 1 anfangen, also ausnahmsweise mal nicht nullbasiert?
|
AW: Max. Zeilenlänge erreicht
Müsste bei 1 anfangen, ist bei Copy aber erst mal unkritisch.
Ist der komplette Dateipfad evtl. zu lang? Wo wird der Fehler genau ausgegeben und wie lautet er ganz genau? |
AW: Max. Zeilenlänge erreicht
Also hier der genaue Fehler:
![]() Und sobald ich auf "Anhalten" klicke, dann wird eben diese Zeile markiert: mname := trim(copy(IdMessage1.Subject, 0, 30)); Habs jetzt mal statt 0 auf 1 gesetzt. Wie gesagt, es ist nicht bei allen. Ich hab auch schon ein paar geladen. Das ist immer mal ab und zu. Könnte es sein, dass da irgendwas mit dem Titel der Email nicht stimmt, der der zu lang ist für nen String? |
AW: Max. Zeilenlänge erreicht
Zum Glück setzt Copy den Index von alleine auf 1 hoch :)
(leider sollte im Gegenzug die Länge gekürzt werden) OK, aber der Fehler hier hat vermutlich nichts mit dem Dateinamen zu tun. Das ReadLn hat einen internen Textpuffer, welcher nicht unbegrenzt groß ist und hier sieht es so aus, als wenn eine Zeile mal zu lang ist. Aber eigentlich der Text/Quellcode der eMail intern Zeilenumbrüche enthalten (jedenfalls laut Spezifikation), was hier wohl nicht der Fall ist und somit der Puffer überläuft. |
AW: Max. Zeilenlänge erreicht
Können das eingebettete MIME codierte Anlagen sein? Dann müsste der Fehler immer auftreten, wenn es eine eMail mit Anlage ist.
|
AW: Max. Zeilenlänge erreicht
Hallo erstmal,
Zitat:
[
Delphi-Quellcode:
Mfg Coffeecoder
mname := trim(copy(IdMessage1.Subject, 1, 10));
|
AW: Max. Zeilenlänge erreicht
Bedenke, daß es egal ist, was du bei Copy angibst.
(und schonwieder die 1 vergessen :wink:) IdMessage1.Subject wird komplett abgearbeitet und es gibt den vollständigen String zurück. Erst danach kopiert Copy einen Teil dort raus. Der Fehler scheint aber schon beim Download der Mail aufzutreten, aber auf jeden Fall tritt der schon bei Indy auf und nicht erst im Copy. Tritt dieses Problem bei einer bestimmten eMail auf? Wo kommt diese Mail denn her? Kannst du diese Mail mit was Anderem runterladen, bzw. dort mal reinsehn? (z.B. im Firefox > rechtes der Button "Andere Aktionen" > Quelltext anzeigen) Ich hoffe mal FF und andere Mailprogramme speichern den Quelltext unverändert ab. |
AW: Max. Zeilenlänge erreicht
Man könnte ja eine Zwischenvariable einführen.
Delphi-Quellcode:
s := IdMessage1.Subject; //nun müsste der Fehler hier kommen
mname := trim(copy(s, 1, 30)); |
AW: Max. Zeilenlänge erreicht
Sind eventuell Steuerzeichen enthalten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz