AGB  ·  Datenschutz  ·  Impressum  







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

Standarddateicodierung

Ein Thema von ringli · begonnen am 5. Mär 2024 · letzter Beitrag vom 6. Mär 2024
Antwort Antwort
Seite 1 von 2  1 2      
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#1

Standarddateicodierung

  Alt 5. Mär 2024, 21:54
Hallo,

ich habe die Delphi 12 IDE so eingestellt das die Standarddateicodierung UTF-8 ist.

Bei bestimmten Dateien (z.B. RC-Dateien) benötige ich jedoch weiterhin die ANSI-Codierung.

Eigentlich hätte ich gedacht das Delphi die einmal eingestellte Dateicodierung pro Datei beibehält. Leider scheint das nicht so zu sein, denn nach dem Öffnen/Bearbeiten einer RC-Datei im ANSI-Format wird die Dateicodierung auf UTF-8 (also meine eingestellte Standardcodierung) geändert.

Zunächst habe ich mir nichts dabei gedacht, aber wenn die Dateicodierung der RC-Datei auf UTF-8 steht, lässt sich diese Datei nicht mehr kompilieren. Ich muss also die Dateicodierung auf ANSI ändern damit das Kompilieren wieder durchläuft.

Mache ich was falsch, muss ich in der IDE noch etwas einstellen oder kann man irgendwo Ausnahmen definieren?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.455 Beiträge
 
Delphi 12 Athens
 
#2

AW: Standarddateicodierung

  Alt 5. Mär 2024, 23:32
Ich kann das hier nicht nachvollziehen. Auch bei Standard UTF8 bleibt die eingestellte Codierung einer im Editor veränderten Datei bei ANSI, wenn sie es vorher war.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.084 Beiträge
 
Delphi 12 Athens
 
#3

AW: Standarddateicodierung

  Alt 5. Mär 2024, 23:47
Dachte das Standardformat gilt nur für neue Dateien.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Standarddateicodierung

  Alt 6. Mär 2024, 06:59
Ich werde heute Abend mal versuchen ein Minimalbeispiel zu erstellen. Vielleicht passiert das ja nur bei meinen bestehenden Projekten.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Standarddateicodierung

  Alt 6. Mär 2024, 10:31
Ich hab (mit XE6 ) ab und zu den Effekt, dass mir eine Datei (allerdings *.pas) von ANSI auf UTF8 umgestellt wird. Hab's nie genau verfolgt, woran es liegt - vielleicht GExperts-Formatter auf einer Datei mit Umlauten in Kommentaren o.ä. Vielleicht schafft's Delphi auch ohne 3rd-Party-Unterstützung.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.084 Beiträge
 
Delphi 12 Athens
 
#6

AW: Standarddateicodierung

  Alt 6. Mär 2024, 10:58
Ich wurde bisher beim Speichern vom Delphi normal gefragt, ob ich als UTF-8 speichern will. (z.B. wenn ein Zeichen in der Datei vorkommt, welche nicht ins ANSI passt)
Kann mich jetzt nich an was automatisches erinnern.

Bei den Text-DFMs hingegen, da ändert Delphi gern mal was.
Merk ich beim manuellen Revert, wenn eine Datei abwechselnd Änderungen von D11 und XE bekommen wollte, die ich nicht einchecken mochte.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.084 Beiträge
 
Delphi 12 Athens
 
#7

AW: Standarddateicodierung

  Alt 6. Mär 2024, 11:03
Was aber nervig ist, der Umgang mit Dateien ohne BOM.

Delphi und viele Windows-Programme gehen von ANSI aus,
während oft Linux und Github von UTF-8 als Standard ausgehn.

Delphi erkennt aber wenigstend, wenn es UTF-8 ist, bzw. ob es sich nicht als UTF-8 laden lässt, während Github z.B. ein ANSI-ä scheiße anzeigt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Mär 2024 um 11:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.455 Beiträge
 
Delphi 12 Athens
 
#8

AW: Standarddateicodierung

  Alt 6. Mär 2024, 11:15
Bei den Text-DFMs hingegen, da ändert Delphi gern mal was.
Merk ich beim manuellen Revert, wenn eine Datei abwechselnd Änderungen von D11 und XE bekommen wollte, die ich nicht einchecken mochte.
Das ist ja schon seit Ewigkeiten so. Es wird aber niemals das Encoding geändert. (Käme mal auf einen Versuch an, Komponentennamen mit Umlauten zu verwenden...)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.084 Beiträge
 
Delphi 12 Athens
 
#9

AW: Standarddateicodierung

  Alt 6. Mär 2024, 11:40
Doch, das Encoding der DFM wird geändert.

Bei der PAS merkt sich Delphi die glesene Kodierung.
Bei DFMs nicht (immer).
Beim D10/11 bin ich mir nicht sicher, aber XE ändert es öfters, obwohl es den originalen Zustand kennen dürfte.

Intern wird immernoch Binär gearbeitet
und beim Lesen wird eventueller Text nach Binär umgewandelt.
Beim Speichern wird aus Binär NEU der Text generiert.


Delphi-Quellcode:
// unit Classes;

type
  TStreamOriginalFormat = (sofUnknown, sofBinary, sofText, sofUTF8Text);

procedure ObjectBinaryToText(Input, Output: TStream); overload;
procedure ObjectBinaryToText(Input, Output: TStream; var OriginalFormat: TStreamOriginalFormat); overload;
procedure ObjectTextToBinary(Input, Output: TStream); overload;
procedure ObjectTextToBinary(Input, Output: TStream; var OriginalFormat: TStreamOriginalFormat); overload;

procedure ObjectResourceToText(Input, Output: TStream); overload;
procedure ObjectResourceToText(Input, Output: TStream; var OriginalFormat: TStreamOriginalFormat); overload;
procedure ObjectTextToResource(Input, Output: TStream); overload;
procedure ObjectTextToResource(Input, Output: TStream; var OriginalFormat: TStreamOriginalFormat); overload;

function TestStreamFormat(Stream: TStream): TStreamOriginalFormat;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.455 Beiträge
 
Delphi 12 Athens
 
#10

AW: Standarddateicodierung

  Alt 6. Mär 2024, 12:48
Das kann aber eigentlich nur dann passieren, wenn irgendwo Identifier mit Umlauten vorkommen. Der relevante Code sieht so aus:
Delphi-Quellcode:
  procedure WriteUTF8Str(const S: string);
  var
    Ident: TBytes; // UTF8String;
  begin
    Ident := TEncoding.UTF8.GetBytes(S);
                                       
    if not UTF8Idents and (Length(Ident) > S.Length) then
      UTF8Idents := True;
    WriteTBytes(Ident);
  end;
Textinhalte wie Caption, TEdit.Text oder auch TMemo.Lines werden wie gehabt mit "#<xxx>" codiert.

Wenn du wieder mal so eine Datei hast, dann prüf das doch mal nach.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:51 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