![]() |
Re: AnsiString mit fester Länge
Prima! Danke!
Benmik |
dEXIF 1.03d portiert nach Delphi 2009
Liste der Anhänge anzeigen (Anzahl: 1)
Here we go! Angehängt sind die Units dEXIF 1.03d portiert nach Delphi 2009.
Die Portierung ist eine reine Umstellung auf explizite ANSIStrings, Unicode geht nicht! Falls jemandem noch Probleme auffallen sollten, bitte melden, so dass wir alle davon profitieren können. |
Re: AnsiString mit fester Länge
Liste der Anhänge anzeigen (Anzahl: 2)
Vielen Dank!
Das bringt mich zu einer Bitte, die hoffentlich nicht zu viel verlangt ist. Seit Längerem suche ich nach einer Komponente für BrowseFolder, die benutzerfreundlicher ist als das übliche Angebotene. Jetzt bin ich auf Torry fündig geworden, es ist WDialogEx. Leider braucht man zu dieser Komponente die TNTControls, und hier hakt es. Obwohl die Komponente explizit für D2009 "ausgepreist" ist, und es eine Art Anpassung für D2009 gibt, funktioniert es nicht. Ich habe schon herumgepolkt, aber meine Kenntnisse von Unicode, Widestrings und AnsiStrings reichen nicht. Hat einer von euch vielleicht etwas Nerv und Zeit, sich das anzusehen? Ich brauche ja die ganze Funktionalität von TNT nicht, mir würde eine Abkopplung schon reichen. Wäre schön. Danke schonmal. Benmik |
Re: AnsiString mit fester Länge
Benmik, mache aus deiner neuen Frage bitte einen neuen Thread. Thread-Highjacking mag hier keiner.
|
Re: AnsiString mit fester Länge
Tut mir leid, auch wenn ich den Begriff "Thread-Hijacking" deutlich zu hart finde. Da es um Strings und Anpassung an D2009 geht, ist m.E. doch eine ziemlich Nähe zum eigentlichen Threadanliegen gegeben. Der Autor der Komponente hat mir jetzt geantwortet, vielleicht erarbeiten wir da eine Lösung. Danke nochmal für die Bereitstellung deiner Anpassung.
Benmik |
Re: AnsiString mit fester Länge
Zitat:
![]() Das sollte so mit Unicode richtig funktionieren, ein Beispiel findest du im ersten Beitrag. |
Re: AnsiString mit fester Länge
Hm, nachdem ich mich mit Sebastian per PN ausgetauscht habe und vom Autor meiner Lieblingskomponente eine Version erstellt wurde, die ohne die TNTControls auskommt, habe ich das neue, an D2009 angepasste dEXIF zu kompilieren versucht. Es lief aber keineswegs durch, ich musste noch eine Reihe von "string" durch "AnsiString" ersetzen, z.B. bei den Callback-Funktionen. Und auch bei deinem "string[4]" (dEXIF, 2307) vom Startbeitrag meckerte der Compiler, weil dort "Char" statt "AnsiChar" stand.
Hat das alles seine Richtigkeit? Hast du auch die richtigen Units gepostet, oder ist bei mir was verquer? Benmik |
Re: AnsiString mit fester Länge
Ich habe die Units gerade nochmal verglichen und es sind definitiv dieselben, die ich gerade unter D2009 benutze! Wie oben erwähnt, gibts noch ein paar Warnungen und Hinweise, die ich nicht umgesetzt habe.
Wenn du diese Warnungen und Hinweise in den Compiler-Optionen als "Error" deklariert hast, stoppt der Compiler da natürlich. Lass mal ein paar Zeilennummern und die entsprechenden Fehler sehen... Den einzigen String[4] in dEXIF ist in der folgenden Funktion:
Delphi-Quellcode:
Wo musstest du den da zusätzlich Char durch AnsiChar ersetzen? Das ist exakt die Datei-Version, die ich gepostet habe!? Ich habe die Datei gerade extra nochmal runtergeladen.
function tEndInd.Put32s(data:Longint):ansistring;
var data2:integer; buffer:string[4] absolute data2; bbuff:ansichar; begin data2 := data; if MotorolaOrder then begin bbuff := buffer[1]; buffer[1] := buffer[4]; buffer[4] := bbuff; bbuff := buffer[2]; buffer[2] := buffer[3]; buffer[3] := bbuff; end; result := buffer; end; Außerdem wäre es nett, wie oben erwähnt, wenn du die geänderten Units auch uns zur Verfügung stellen würdest. |
Re: AnsiString mit fester Länge
Delphi-Quellcode:
Sicher daß diese so stimmt?
data2: integer;
buffer: string[4] absolute data2; String[4] ist 5 Byte groß und somit liegt buffer[4] nicht mehr im Datenbereich von data2. Außerdem würde so die länge von buffer falsch gesetzt und wäre somit nahezu unberechenbar. Length(buffer) = Byte(data2) |
Re: AnsiString mit fester Länge
Die Einwände verstehe ich nicht so ganz!?
Ich habe an der Logik der Original-Funktion nix geändert bis auf die Ersetzung des Rückgabe-Parameters von String auf AnsiString und bbuff von char nach AnsiChar. Es handelt sich laut Definition der Funktion um die Umwandlung von Unsigned 32bit Integers... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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