Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TStringList ohne BOM speichern? (https://www.delphipraxis.net/178328-tstringlist-ohne-bom-speichern.html)

Perlsau 2. Jan 2014 12:18

AW: TStringList ohne BOM speichern?
 
Zitat:

Zitat von Tonic1024 (Beitrag 1241767)
Ist letztlich Auslegungssache. In meinen Augen ist #13#10 nicht eine neue Zeile, sondern es steht am Ende der letzten, mit text gefüllten Zeile. So wie in jeder Zeile vorher.

Aus Sicht eines Programmierers ist das vollkommen korrekt. Aus Sicht eines reinen Anwenders, insbesondere eines DAUs, der absolut nichts von irgendwelchen Internas weiß, zählt das, was sein Programm anzeigt. Somit hast du recht: es kommt drauf an, wer die Sache deutet.

Zitat:

Zitat von Tonic1024 (Beitrag 1241767)
Der Cursor blinkt nach einem LineFeed allerdings korrekter Weise am Anfang einer (noch) nicht existenten zusätzlichen Zeile. Der XY-Positionsanzeiger des Cursors zeigt dann folgerichtig natürlich eine Zeile mehr an. Diese wird dann natürlich aber nicht mit gespeichert, weil das ja ein zusätzliches #13#10 (im Stream also ein #13#10#13#10) zur Folge hätte. Mehrfaches Laden und Speichern würde jetzt je eine Zeile mehr erzeugen und die Datei würde wachsen, wachsen, wachsen.

Auch das ist korrekt, denn hier betrachtest du die Sache aus der Sicht eines Programmierers.

Zitat:

Zitat von Tonic1024 (Beitrag 1241767)
Über die Darstellung kann man sich jetzt natürlich streiten. Technisch betrachtet ist es in meinen Augen aber korrekt wie es ist. Nur im Kopf ist es auf den ersten Blick irgendwie unlogisch.

Ich kann daran nichts Unlogisches erkennen: Viele Textanzeige-Programme, die ich kenne, zeigen nach dem Zeilenende eine neue Zeile an. Aus Sicht des Programmierers existiert die zwar nicht, aus Sicht des Anwenders aber schon, denn der kann direkt an der neuen Cursorposition Text eingeben. Bei RTF- und Wörd-Dateien ist das anders, aber das betrifft eben nur die Darstellung bzw. die Anwendungslogik.

Somit dürfte nun auch die Frage aus Nummer 9 erschöpfend beantwortet sein :stupid:

fillibuster 2. Jan 2014 12:35

AW: TStringList ohne BOM speichern?
 
Zitat:

Zitat von Perlsau (Beitrag 1241772)
...
Somit dürfte nun auch die Frage aus Nummer 9 erschöpfend beantwortet sein :stupid:

ich denke auch :thumb:

Perlsau 2. Jan 2014 13:10

AW: TStringList ohne BOM speichern?
 
Dennoch würde ich gerne noch einmal auf meine Frage in Post Nummer 7 zurückkommen:

In welchem Format wird gespeichert, wenn ich keinen Encoding-Parameter angebe?

DeddyH 2. Jan 2014 13:17

AW: TStringList ohne BOM speichern?
 
http://docwiki.embarcadero.com/Libra...ngs.SaveToFile:
Zitat:

Wenn der Parameter Encoding nicht angegeben ist, werden die Strings mit der in der Eigenschaft Encoding angegebenen Codierung gespeichert.
http://docwiki.embarcadero.com/Libra...rings.Encoding:
Zitat:

Encoding ist eine schreibgeschützte Eigenschaft, die den Wert der Codierung enthält, die beim Aufrufen der Methoden LoadFromStream oder LoadFromFile gefunden wird. Wenn die Datei kein BOM enthält, kann der Wert der Codierung nicht gefunden werden und Encoding wird auf die in der Eigenschaft DefaultEncoding angegebene Standardcodierung gesetzt.
Steht alles in der Doku.

MaBuSE 2. Jan 2014 13:18

AW: TStringList ohne BOM speichern?
 
Zitat:

Zitat von Perlsau (Beitrag 1241778)
In welchem Format wird gespeichert, wenn ich keinen Encoding-Parameter angebe?

Je nachdem, das in TEncoding.Default steht ;-)

Wobei die TStrings ab Delphi XE ja auch eine DefaultEncoding Eigenschaft hat.
Delphi-Quellcode:
  Memo1.Lines.DefaultEncoding; // sollte TEncoding.Default sein
  Memo1.Lines.Encoding; // wird beim Laden gesetzt, per Default auf DefaultEncoding
  Memo1.Lines.SaveToFile('x');
Laut Doku: ( http://docwiki.embarcadero.com/Libra...coding.Default )
Code:
System.SysUtils.TEncoding.Default

Platfform     Standardcodierung   Instanz
-------------  -------------------  ---------------------------------------
Windows       ANSI                System.SysUtils.TMBCSEncoding
Mac OS X      UTF-8                System.SysUtils.TUTF8Encoding


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Seite 3 von 3     123   

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-2025 by Thomas Breitkreuz