AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Suche Unicode ersatz für AnsiSameText?
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Unicode ersatz für AnsiSameText?

Ein Thema von OrNEC · begonnen am 4. Aug 2010 · letzter Beitrag vom 23. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2      
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#1

Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 17:39
Suche seit einer Stunde nach einer Lösung um AnsiSameText durch was Unicode-fähiges zu ersetzen, kennst vllt jemand eine Lösung?

AnsiSameText(Trim(ExtractFileExt(Buffer)), '.txt')

Geändert von OrNEC ( 4. Aug 2010 um 17:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 17:49
Du hast die Lösung doch schon gefunden - AnsiSameText.
Deinen Dateinamen können chinesisch, türkisch oder was auch immer sein,
aber die Endung muss ".TXT", ".Txt" oder ".txt" lauten.
Also ist AnsiSameText hier vollkommen ausreichend.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 17:56
Ab D2009 ist AnsiSameText() eine Unicodefunktion (auch wenn der namen etwas anderes suggeriert) in D7 aber nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 19:48
... AnsiSameText ...
Sollte doch eigentlich nicht schwer sein:
Zitat von unit SysUtils;:
function AnsiSameText(const S1, S2: string): Boolean;
function WideSameText(const S1, S2: WideString): Boolean;

function Trim(const S: string): string;
function Trim(const S: WideString): WideString;

function ExtractFileExt(const FileName: string): string;
Nur für ExtractFileExt musst Du Dir etwas überlegen.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof

Geändert von Garfield ( 4. Aug 2010 um 20:00 Uhr)
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 19:58
Also es geht um eine Drag & Drop Funktion. Vllt poste ich den danzen Code.
Ich kann die .crp* Datei nicht laden wenn sie kyrillischen Namen hat. Weiß jetzt nicht genau woran es liegt.

Delphi-Quellcode:
procedure TForm1.WMDROPFILES(var Msg: TMessage);
var j, zaehler: Cardinal;
    Buffer, Extension: String;
    i: Integer;
    List, List2 : TTntStringList;
begin
  inherited;
  Buffer := '';
  zaehler := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0);
  for j := 0 to zaehler - 1 do
    begin
      SetLength(Buffer, DragQueryFile(Msg.WParam, j, nil, 0) + 1);
      DragQueryFile(Msg.WParam, j, @Buffer[1], Length(Buffer));
      Extension := ExtractFileExt(Buffer);
    end;
  DragFinish(Msg.WParam);

//Laden
wideshowmessage(ExtractFileExt(Buffer));

if WideSameText(Trim(ExtractFileExt(Buffer)), '.crpu') or WideSameText(Trim(ExtractFileExt(Buffer)), '.crp') or WideSameText(Trim(ExtractFileExt(Buffer)), '.ccr') then
begin
List:=TTntStringList.Create;
  try
    List.LoadFromFile(Buffer);

    if ListBox1.Count<>0 then
    begin
    if WideMessageDlg(_('Retain existing stations list?'), mtConfirmation, [mbYes, mbNo], 0) = mrNo then
    begin
    ListBox1.Clear;
    ListBox2.Clear;
    ListBox3.Clear;
    ListBox4.Clear;
    end;
    end;

    if WideSameText(Trim(ExtractFileExt(Buffer)), '.crpu') or WideSameText(Trim(ExtractFileExt(Buffer)), '.crp') then
    begin
    for i:=0 to List.Count-1 do
    begin
    List2:=Explode('<>', List[i]);
    ListBox1.Items.Insert(i, List2[1]);
    ListBox2.Items.Insert(i, List2[2]);
    ListBox3.Items.Insert(i, List2[3]);
    ListBox4.Items.Insert(i, List2[4]);
    List2.Free;
    end;
    end else
        begin
        for i:=0 to List.Count-1 do
        begin
        List2:=Explode('=', List[i]);
        ListBox1.Items.Insert(i, List2[1]);
        ListBox2.Items.Insert(i, List2[2]);
        ListBox3.Items.Insert(i, List2[3]);
        ListBox4.Items.Insert(i, List2[4]);
        List2.Free;
        end;
        end;

  finally
    List.Free;
  end;
end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 20:18
Nur für ExtractFileExt musst Du Dir etwas überlegen.
ExtractFileExt sucht nach dem letzten Punkt und der Punkt existiert in Ansi und Unicode ... ist also ebenso kein Problem.
(höchstens Unicodezeichen in der Dateiendung würden in ? umgewandelt, aber das sollte ja soweit auch kein Problem sein, wenn man eh auf Dateiendungen mit ANSI-Zeichen prüft)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 20:20
Genau, hab das jetzt auch soweit verstanden.

Wo hackt es dann eurer Meinung nach da im Code?
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 4. Aug 2010, 20:23
Vielleicht solltest Du da auch Widefunktionen verwenden. Ich habe das mal so gemacht:

Delphi-Quellcode:
procedure T***.WMDROPFILES(var Msg: TMessage);
var
  pDragFile : PWideChar;
  iFileCount : integer;
  i, iSize : integer;
  slDropList : TStringList;
begin
  {
  *  Initialisierung.
  }

  pDragFile := nil;
  slDropList := TStringList.Create;
  {
  *  Anzahl der Dropfiles holen.
  }

  iFileCount := DragQueryFileW(Msg.wParam, $FFFFFFFF, pDragFile, 255);
  {
  *  Wenn Einträge existieren, Liste abarbeiten.
  }

  if iFileCount > 0 then
  for i := 0 to iFileCount - 1 do
  begin
    {
    *  Die Länge des Eintrages ermitteln.
    }

    iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1;
    {
    *  Den speicher für den String bereitstellen.
    }

    pDragFile := WideStrAlloc(iSize);
    {
    *  Den Eintrag holen.
    }

    DragQueryFileW(Msg.wParam, i, pDragFile, iSize);
    {
    *  Den Eintrag in die Liste eintragen.
    }

    slDropList.Add(pDragFile);
    {
    *  Den reservierten Speicher freigeben.
    }

    WideStrDispose(pDragFile);
  end;
  {
  *  Messagebehandlung beenden.
  }

  DragFinish(Msg.wParam);

...
end;
slDropList müsste vermutlich TWideStringList sein. Ist es hier nicht, weil ich den TNT Hack von Himitsu verwende.

Für das ExtractFileExt könnte man auch eine Kopierfunktion verwenden.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 5. Aug 2010, 17:37
    iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1;
Ich wurde freundlicherweise darauf hingeweisen, dass es richtig so wäre:

    iSize := DragQueryFileW(Msg.wParam, i, nil, 0) + 1;

Vielen Dank.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Suche Unicode ersatz für AnsiSameText?

  Alt 15. Aug 2010, 20:19
Dieser Code tut meinen Augen weh:
Delphi-Quellcode:
wideshowmessage(ExtractFileExt(Buffer));

if WideSameText(Trim(ExtractFileExt(Buffer)), '.crpu') or WideSameText(Trim(ExtractFileExt(Buffer)), '.crp') or WideSameText(Trim(ExtractFileExt(Buffer)), '.ccr') then
Vielleicht sollte man hier eine Zwischenvariable verwenden!
  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 02:27 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