![]() |
Suche Unicode ersatz für AnsiSameText?
Suche seit einer Stunde nach einer Lösung um AnsiSameText durch was Unicode-fähiges zu ersetzen, kennst vllt jemand eine Lösung?
Delphi-Quellcode:
AnsiSameText(Trim(ExtractFileExt(Buffer)), '.txt')
|
AW: Suche Unicode ersatz für AnsiSameText?
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. |
AW: Suche Unicode ersatz für AnsiSameText?
Ab D2009 ist AnsiSameText() eine Unicodefunktion (auch wenn der namen etwas anderes suggeriert) in D7 aber nicht.
|
AW: Suche Unicode ersatz für AnsiSameText?
Zitat:
Zitat:
|
AW: Suche Unicode ersatz für AnsiSameText?
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; |
AW: Suche Unicode ersatz für AnsiSameText?
Zitat:
(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) |
AW: Suche Unicode ersatz für AnsiSameText?
Genau, hab das jetzt auch soweit verstanden. :)
Wo hackt es dann eurer Meinung nach da im Code? :? |
AW: Suche Unicode ersatz für AnsiSameText?
Vielleicht solltest Du da auch Widefunktionen verwenden. Ich habe das mal so gemacht:
Delphi-Quellcode:
slDropList müsste vermutlich TWideStringList sein. Ist es hier nicht, weil ich den TNT Hack von Himitsu verwende.
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; Für das ExtractFileExt könnte man auch eine Kopierfunktion verwenden. |
AW: Suche Unicode ersatz für AnsiSameText?
Zitat:
Delphi-Quellcode:
iSize := DragQueryFileW(Msg.wParam, i, nil, 0) + 1;
Vielen Dank. |
AW: Suche Unicode ersatz für AnsiSameText?
Dieser Code tut meinen Augen weh:
Delphi-Quellcode:
Vielleicht sollte man hier eine Zwischenvariable verwenden!
wideshowmessage(ExtractFileExt(Buffer));
if WideSameText(Trim(ExtractFileExt(Buffer)), '.crpu') or WideSameText(Trim(ExtractFileExt(Buffer)), '.crp') or WideSameText(Trim(ExtractFileExt(Buffer)), '.ccr') then |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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-2025 by Thomas Breitkreuz