Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Max. Zeilenlänge erreicht (https://www.delphipraxis.net/160509-max-zeilenlaenge-erreicht.html)

SyntaxXx 16. Mai 2011 22:58

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.

Jumpy 16. Mai 2011 23:34

AW: Max. Zeilenlänge erreicht
 
Muss das nicht bei 1 anfangen, also ausnahmsweise mal nicht nullbasiert?

Satty67 16. Mai 2011 23:41

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?

SyntaxXx 16. Mai 2011 23:49

AW: Max. Zeilenlänge erreicht
 
Also hier der genaue Fehler:

http://img6.imagebanana.com/img/8prr...rMaxLength.png


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?

himitsu 17. Mai 2011 01:09

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.

Satty67 17. Mai 2011 07:42

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.

Coffeecoder 17. Mai 2011 07:54

AW: Max. Zeilenlänge erreicht
 
Hallo erstmal,

Zitat:

Zitat von himitsu (Beitrag 1101251)
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.

Wenn dies der Fall ist dann versuche mal anstelle von 30, nur 10 mal Stellen zu kopieren nur um zu testen:

[
Delphi-Quellcode:
mname := trim(copy(IdMessage1.Subject, 1, 10));
Mfg Coffeecoder

himitsu 17. Mai 2011 08:08

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.

DeddyH 17. Mai 2011 08:36

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));

Luckie 17. Mai 2011 08:40

AW: Max. Zeilenlänge erreicht
 
Sind eventuell Steuerzeichen enthalten?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.
Seite 1 von 3  1 23      

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