AGB  ·  Datenschutz  ·  Impressum  







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

Umlaute

Ein Thema von Berni68 · begonnen am 12. Apr 2010 · letzter Beitrag vom 16. Apr 2010
Antwort Antwort
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

Umlaute

  Alt 12. Apr 2010, 21:28
Hallo zusammen,

wie kann ich folgendes Problem in Lazarus umgehen:

RenameFile(quelle,ziel) funktioniert NICHT mit Umlauten
(*
FileExists() funktioniert mit Umlauten
DirectoryExists() funktioniert mit Umlauten
DeleteFile() funktioniert mit Umlauten
ForceDirectory() funktioniert mit Umlauten
*)
sobald in quelle oder ziel entweder im Pfad oder im Dateiname ein Umlaut (äöü)
vorhanden ist (wo auch immer) wird nicht mehr umbenannt.
Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Umlaute

  Alt 12. Apr 2010, 21:35
Sind Bugs in der Lazarus-VCL die (denke ich) größtenteils der Entscheidung geschultet sind den nativen Unicode-Stringtyp als UTF8 zu implementieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Umlaute

  Alt 12. Apr 2010, 21:47
Die Lazarus-VCL/RTL ist vorwiegend Unicode und teils UTF-8 und die FPC-RTL ist wohl mehr UTF-8 ... da wohl stimmen manchmal die Umwandlung nicht ganz

und du mußt auch noch aufpassen wann du welche Kodierung verwenden mußt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Umlaute

  Alt 12. Apr 2010, 21:51
und wie pass ich da am besten auf?
Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Umlaute

  Alt 12. Apr 2010, 21:54
Zitat von Berni68:
und wie pass ich da am besten auf?
Na schauen von welchem Typ die Parameter sind.

WideString, UTF8String, AnsiString/String, ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Umlaute

  Alt 12. Apr 2010, 22:03
da kann ich nicht viel aufpassen.
ich verwende Lazarus zur Erstellung einer dll (64bit) die als UDF in Firebird verwendet wird.
da krieg ich die Zeichenfolgen (nur) als PChar.
Und mit PChar gehts rename mit Umlauten nicht. (string hab ich auch ausprobiert (ausserhalb der UDF)
geht aber auch nicht)
Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Umlaute

  Alt 12. Apr 2010, 22:28
Wenn nur PChar und String zu Auswahl stehen, dann kannst du es nur mal UTF-8-kodiert versuchen ... wenn dieses auch nicht geht, dann geht es einfach nicht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Umlaute

  Alt 13. Apr 2010, 19:21
Es gibt auch noch die Funtionen:
FileExistsUTF8
DirectoryExistsUTF8
DeleteFileUTF8
RenameFileUTF8
dann klappt's auch mit den Umlauten.
Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Umlaute

  Alt 16. Apr 2010, 17:13
Zitat von Berni68:
Es gibt auch noch die Funtionen:
FileExistsUTF8
DirectoryExistsUTF8
DeleteFileUTF8
RenameFileUTF8
dann klappt's auch mit den Umlauten.
Dann waren deine Strings wohl UTF-8 kodiert. Die FCL und die RTL von Free Pascal verwenden im Gegensatz zur LCL von Lazarus noch immer ANSI-Kodierung.

Theoretisch hätte folgender Aufruf zum Ziel führen können:
RenameFile(UTF8ToAnsi(quelle), UTF8ToAnsi(ziel)); Ein entsprechender Wikiartikel bei Free Pascal/Lazarus findet sich übrigens hier.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Antwort Antwort


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