AGB  ·  Datenschutz  ·  Impressum  







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

: Fehler beim Umbenennen der Datei

Ein Thema von Opa · begonnen am 30. Nov 2007 · letzter Beitrag vom 3. Dez 2007
 
Benutzerbild von himitsu
himitsu

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

Re: : Fehler beim Umbenennen der Datei

  Alt 2. Dez 2007, 13:02
nja, das einzige Prolem ist also nur, daß du die Dateien schon im ANSI-Mode ausließt und dort alle nicht kompatieblen Unicode-Zeichen durch '?' ersetzt wurden ... an dieser Stelle schon die UnicodeZeichen zerstört sind und es ist nicht möglich dieses wieder in einen UnicodeString zurückzuwandeln ... wie soll denn irgendjemand/irgendwas nur aus einem '?' wieder das ursprüngliche Zeichen rausbekommen?

Also entweder mußt die immer mit dem Unicodenamen arbeiten, also diesen als Unicode auslesen und auch beim zum Umbennenen der Datei die Unicode-APIs verwenden.

alternativ kannst du auch die 8.3-DOS-Dateinamen verwenden, welche jede Datei besitzt.
Hierbei muß der Zielname aber auch als ANSI vorliegen, was du ja eh willst
Delphi-Quellcode:
type
  PDateiRec = ^TDateiRec;
  TDateiRec = packed record
    _DateiName : TFileName;
    _FileName : TFileName;
    _Erw0 : TFileName;
    _Erw1 : TFileName;
    _Pfad : TFileName;
    _Time : TDateTime;
    _Attr : integer;
    _Size : integer;
    _CRC64Calc : int64;
  end;

if FindFirst(APfad + AMaske, faAnyFile and not faDirectory, sr) = 0 then
begin
  repeat
    if (sr.Attr and faDirectory) = 0 then
    begin
      // aktueller Dateiname in 8.3-Version
      DeinRecord.Dateiname := sr.FindData.cAlternateFileName;
      // Dateiname in ANSI
      DeinRecord.NeuerDateiname := sr.Name;
      // '?' durch '_' oder Anderes ersetzen
      for i := 1 to Length(DeinRecord.NeuerDateiname) do
        if DeinRecord.NeuerDateiname[i] = '?then
          DeinRecord.NeuerDateiname[i] := '_';

      DeinRecord._Erw0 := _ExtractFileExtOhnePunkt(DeinRecord.NeuerDateiname);
      DeinRecord._Erw1 := ExtractFileExt(DeinRecord.NeuerDateiname);
      DeinRecord._FileName := ChangeFileExt(DeinRecord.NeuerDateiname,'');
      DeinRecord._Pfad := APfad;
      DeinRecord._Time := _DosDateTimeToDateTime(sr.Time);
      DeinRecord._Attr := sr.Attr;
      DeinRecord._Size := sr.Size;
    end;
  until FindNext(sr) <> 0;
  FindClose(sr);
end;
DeinRecord.NeuerDateiname könntest du dann noch nach wünschen ändern
und zum umbennen dann z.B.
Delphi-Quellcode:
pFrom := DeinRecord.Dateiname;
pTo := DeinRecord.NeuerDateiname;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 01:40 Uhr.
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