AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList ohne BOM speichern?

Ein Thema von fillibuster · begonnen am 2. Jan 2014 · letzter Beitrag vom 2. Jan 2014
Antwort Antwort
Seite 3 von 3     123   
Perlsau
(Gast)

n/a Beiträge
 
#21

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 12:18
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.

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.

Ü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
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#22

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 12:35
...
Somit dürfte nun auch die Frage aus Nummer 9 erschöpfend beantwortet sein
ich denke auch
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#23

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 13:10
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 13:17
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: TStringList ohne BOM speichern?

  Alt 2. Jan 2014, 13:18
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
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)

Geändert von MaBuSE ( 2. Jan 2014 um 13:25 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz