Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AnsiString mit fester Länge (https://www.delphipraxis.net/128713-ansistring-mit-fester-laenge.html)

Benmik 11. Apr 2009 22:16

Re: AnsiString mit fester Länge
 
Prima! Danke!

Benmik

GPRSNerd 12. Apr 2009 10:50

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.

Benmik 12. Apr 2009 18:17

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

GPRSNerd 13. Apr 2009 09:10

Re: AnsiString mit fester Länge
 
Benmik, mache aus deiner neuen Frage bitte einen neuen Thread. Thread-Highjacking mag hier keiner.

Benmik 13. Apr 2009 13:23

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

jaenicke 13. Apr 2009 14:46

Re: AnsiString mit fester Länge
 
Zitat:

Zitat von Benmik
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.

Die kann ja nicht viel, ich habe gerade mal eine Version von TFolderBrowser, die mit D2009 funktioniert, hochgeladen:
http://www.delphi-forum.de/viewtopic...=558093#558093
Das sollte so mit Unicode richtig funktionieren, ein Beispiel findest du im ersten Beitrag.

Benmik 14. Apr 2009 23:55

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

GPRSNerd 20. Apr 2009 12:00

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:
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;
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.

Außerdem wäre es nett, wie oben erwähnt, wenn du die geänderten Units auch uns zur Verfügung stellen würdest.

himitsu 20. Apr 2009 12:12

Re: AnsiString mit fester Länge
 
Delphi-Quellcode:
data2: integer;
buffer: string[4] absolute data2;
Sicher daß diese so stimmt?
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)

GPRSNerd 20. Apr 2009 12:26

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 14:07 Uhr.
Seite 2 von 3     12 3      

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