Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

GPRSNerd 4. Feb 2009 14:44


AnsiString mit fester Länge
 
Hi,

weiss jemand, wie ich einen AnsiString fester Länge definiere? Also das AnsiString-Pendant zu String[10]?

Versuche ich AnsiString[10] so gibts ne Compiler-Fehlermeldung unter Delphi 2007:
[DCC Fehler] dEXIF.pas(94): E2029 ';' erwartet, aber '[' gefunden

Danke,
Stefan

PS: Ich versuche gerade die dExif-Units von McGuirez so umzuschreiben, dass sie auch unter Delphi 2009 funktionieren.
Hat das vielleicht schon jemand gemacht?

sirius 4. Feb 2009 14:53

Re: AnsiString mit fester Länge
 
Shortstring[10] vielleicht

himitsu 4. Feb 2009 14:57

Re: AnsiString mit fester Länge
 
String[10] ist ein AnsiString ... genauer gesagt ein ShortString mit maximal 10 Zeichen (also 11 Byte).
Dieses sollte sich auch unter D2009 nicht geändert haben.

GPRSNerd 4. Feb 2009 15:06

Re: AnsiString mit fester Länge
 
Danke himitsu für die Bestätigung, ich hatte so etwas von Andreas H. irgendwo gelesen, aber den Artikel nicht mehr gefunden.

GPRSNerd 5. Feb 2009 10:57

Re: AnsiString mit fester Länge
 
Bis auf ein paar hundert Warnungen wegen impliziter String-Umwandlungen läuft die dEXIF-Komponente, soweit ich das testen konnte, auch unter Delphi 2009 im "ANSIModus".

Danke für die Hilfe,
Stefan

himitsu 5. Feb 2009 11:04

Re: AnsiString mit fester Länge
 
du kannst je die impliziten Stringumwandlungen in Explizite ändern, dann gibt's keine Warnungen mehr :angel2:

GPRSNerd 5. Feb 2009 11:09

Re: AnsiString mit fester Länge
 
Ich weiss. Die "bösen Warnungen" wegen potentiellem Datenverlust bei der Konvertierung von String->Ansi habe ich größtenteils so erledigt.
Die meisten übriggebliebenen Warnungen bei Ansi->String kommen wegen Benutzung von Funktionen wie pos, trim floattostr, inttostr etc.

himitsu 5. Feb 2009 11:27

Re: AnsiString mit fester Länge
 
dort kannst ja notfalls die Parameter nach String casten und das Funktionsergenis dann jeweils nach AnsiString oder WideString (jenachdem auf was das Ergebnis zugewiesen wird).

da paßt es sich dann je nach Delphi an :angel2:
Code:
Var A, Ar: AnsiString;
    W, Wr: WideString;
    S, Sr: String;

                              // Ansi-Delphi Unicode-Delphi
Ar := AnsiString(Trim(String(A))); // A>A>A A>W>A also egal
Ar := AnsiString(Trim(String(W))); // [color=#ff0000]W>A>A[/color] [color=#ff0000]W>W>A[/color] gewollter Datenverlust
Ar := AnsiString(Trim(S));         // A>A>A [color=#ff0000]W>W>A[/color] in Ar paßt eh nicht mehr rein
Wr := WideString(Trim(String(A))); // A>W>W A>A>W mehr Platz, als nötig
Wr := WideString(Trim(String(W))); // [color=#ff0000]W>A>W[/color] W>W>W Ansi: selber Schuld ***
Wr := WideString(Trim(S));         // A>A>W A>W>W hat och genug Platz
Sr := Trim(String(A));             // A>A>A A>W>W Platz genug
Sr := Trim(String(W));             // [color=#ff0000]W>A>A[/color] W>W>W Ansi: hätt in Sr eh nich reingepaßt
Sr := Trim(S);                     // A>A>A W>W>W alles egal


*** wer in 'nem Ansi-Delphi einen UnicodeString mit den Ansi-Funktionen bearbeitet,
hat's nich anders verdiehnt :p

Benmik 11. Apr 2009 14:20

Re: AnsiString mit fester Länge
 
Hallo Stefan,

rein zufällig bin ich auch gerade daran, bei der Anpassung eines Projektes von D7 nach D2009. Hast du was dagegen, mir die Früchte dein Umwandlung zukommen zu lassen?
Was ich auch gern mal wüsste, ist, ob es etwas gibt, um EXIF-Daten völlig neu zu erstellen, also in JPG-Dateien, die (noch) keine EXIF-Daten haben.

Gruß

Benmik

GPRSNerd 11. Apr 2009 22:10

Re: AnsiString mit fester Länge
 
Jau, kein Problem. Sind mittlerweile auch ausgiebig unter D2009 getestet und funktionieren problemlos.

Da der Autor der dEXIF-Komponenten sich auch auf mehrfache Mails nicht meldet, hat er bestimmt auch nix dagegen, wenn ich die angepassten Sourcen hier anhänge. :wink:
Mache ich morgen, wenn ich wieder an meinen Server komme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 1 von 3  1 23      

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