Frage

Aus irgendeinem Grund in letzter Zeit die * .UDL Dateien auf viele meiner Client-Systeme sind nicht mehr kompatibel, wie sie einmal als ANSI-Dateien gespeichert wurden, die nicht mehr mit dem erwarteten UNICODE-Dateiformat kompatibel ist. Das Endergebnis ist ein Fehlerdialog, die besagt, „Die Datei ist keine gültige Verbindung file“.

Was ist der einfachste Weg, um programmatisch diese Dateien zu öffnen und als Unicode-Datei speichern? Ich weiß, ich kann dies tun, indem jeden in Notepad öffnen und dann als die gleiche Datei zu speichern, sondern mit dem „Unicode“ ausgewählt im Codierabschnitt der als Dialog speichern, aber ich brauche diese in dem Programm zu tun, auf der Unterstützung abgeholzt nennt.

Dieses Problem ist sehr einfach zu duplizieren, erstellen Sie einfach eine * .txt-Datei in einem Verzeichnis, benennen Sie sie in * .UDL, dann bearbeiten Sie die Microsoft-Editor. öffnen Sie sie dann in Notepad und speichern Sie wie die Datei als ANSI-codierte Datei. Versuchen Sie, die UDL aus dem UDL-Editor zu öffnen und es wird Ihnen seine korrupte erzählen. speichern Sie es dann (unter Verwendung von Notepad) als Unicode-codierte Datei und es öffnet sich nun wieder.

War es hilfreich?

Lösung

Dies ist sehr einfach mit meinem TGpTextFile Einheit zu tun. Ich werde eine kurze Probe zusammengestellt und per Post hier.

Es sollte auch mit dem neuen Delphi 2009 sehr einfach sein - sind Sie es vielleicht mit

?

EDIT:. Dies sein, wie Sie es tun können, meine Sachen in dem vor 2009 Delphis mit

var
  strAnsi   : TGpTextFile;
  strUnicode: TGpTextFile;
begin
  strAnsi := TGpTextFile.Create('c:\0\test.udl');
  try
    strAnsi.Reset; // you can also specify non-default 8-bit codepage here
    strUnicode := TGpTextFile.Create('c:\0\test-out.udl');
    try
      strUnicode.Rewrite([cfUnicode]);
      while not strAnsi.Eof do
        strUnicode.Writeln(strAnsi.Readln);
    finally FreeAndNil(strUnicode); end;
  finally FreeAndNil(strAnsi); end;
end;

Lizenz: Das Codefragment gehört oben public domain. Verwenden Sie es, irgendwie, das Sie mögen.

Andere Tipps

Ok, mit delphi 2009 konnte ich mit dem folgenden Code kommen, die zu funktionieren scheinen, aber es ist der richtige Weg, um diese Umwandlung zu tun?

var
  sl : TStrings;
  FileName : string;
begin
  FileName := fServerDir+'configuration\hdconfig4.udl';
  sl := TStringList.Create;
  try
    sl.LoadFromFile(FileName, TEncoding.Default);
    sl.SaveToFile(FileName, TEncoding.Unicode);
  finally
    sl.Free;
  end;
end;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top