Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Unit ConvertCheck (https://www.delphipraxis.net/135355-unit-convertcheck.html)

markus5766h 9. Jun 2009 16:14


Unit ConvertCheck
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ab und zu ergibt sich mal die Frage, wie Strings auf Integerwerte überprüfen,
Zeichen in Strings ersetzen oder Werte umwandeln.
Für die von mir am meisten benötigten Funktionen hab' ich mir 'ne Unit geschrieben.

Funktionen :

// function IsInteger(S: String): Boolean;
// prüft einen String auf Vorhandensein eines Integer-Wertes

// function IsCurrency(S: String): Boolean;
// prüft einen String auf Vorhandensein eines Currency-Wertes

// function IsExtended(S: String): Boolean;
// prüft einen String auf Vorhandensein eines Extended-Wertes

// function IsNumeric(S: String): Boolean;
// prüft einen String auf Vorhandensein der Ziifern 0...9

// function IsColor6(S: String):Boolean;
// prüft einen String auf Vorhandensein eines Color-Wertes ($000000 .. $FFFFFF)

// function IsColor8(S: String):Boolean;
// prüft einen String auf Vorhandensein eines Color-Wertes ($00000000 .. $FFFFFFFF)

// function IsString(S: String; A: String): Boolean;
// prüft einen String(S) auf die Verwendung der Zeichen im String(A)
// gibt True zurück, wenn der String(S) nur aus den Zeichen im String(A) besteht

// function IsNotString(S: String; A: String): Boolean;
// prüft einen String(S) auf die Verwendung der Zeichen im String(A)
// gibt True zurück, wenn der String(S) ein / oder mehrere Zeichen aus String(A) enthält

// function IsIdent(S: String; A: String): Integer;
// vergleicht String(S) und String(A)
// gibt die Anzahl unterschiedlicher Chars zurück

// function CheckInvalidChars(const FilePath: String): String;
// prüft [FilePath] auf nicht verwendbare Chars und ersetzt diese
// Prüfung für Pfad : [RePath], Ersetzt mit [ReP]
// Prüfung für File : [ReFile], Ersetzt mit [ReF]
// Rückgabewert ist der bearbeitete String

// function IntToHexString(n : Integer; num : Integer) : String;
// konvertiert einen Integerwert in einen Hex-Wert
// num gibt die Länge des Strings an (Führende Nullen)
// mit num = 0 wird die Länge automatisch gesetzt

// function HexToInt(n : String): Integer;
// konvertiert einen Hex(-String) zu Ineger
// der Hex-Wert kann mit oder ohne führendes '$'-Zeichen eingegeben werden

// function RGBToColor(R, G, B : Byte): TColor;
// konvertiert einen RGB-Wert in TColor;

// procedure ColorToRGB(Const C : TColor; var R, G, B: Byte);
// konvertiert einen TColor-Wert in R-G-B-Werte

// function IntToBin(n : Integer): String;
// konvertiert einen Integer-Wert in einen Binär-Wert

// function BinToInt(b : String): Integer;
// konvertiert einen Binär-Wert in einen Integer-Wert

himitsu 11. Jun 2009 08:09

Re: Unit ConvertCheck
 
function IsColor8(S: String):Boolean;
* Result:=(C=0) and (D<=$FFFFFFFF);

D<=$FFFFFFFF liefert immer True, da es derzeit den gesamten Wertebereich von Cardinal abdeckt ...
OK im (noch nicht existierenden) 64-Bit-Delphi würde diese Prüfung das gewünschte Ergebnis liefern,
aber da könnte man statt Cardinal auch LongWord verwenden und die Überlaufprüfung aktivieren, dann klappts überall :angel:

function CheckInvalidChars(const FilePath: String): String;
gibt es einen Grund, warum !, §, $, %, & und # verboten sind?
nja egal.

für's Aufteilen Dateiname/Pfad, könnte man eventuell auf die vorhandenen Funktionen zugreifen
ExtractFileName und ExtractFileDir ... muß man aber nicht

function RGBToColor(R, G, B : Byte): TColor;
* Result := B Shl 16 or G Shl 8 or R;

das hier klappt nicht ganz, denn da die Parameter/Variablen nur Bytes sind, würde bei SHL alles aus deren Wertebereich rausgeschoben und wäre weg.
Delphi-Quellcode:
Result := Integer(B) Shl 16 or Integer(G) Shl 8 or R;
function IntToBin(n : Integer): String;
gut, nicht ganz optimal, da jedes Zeichen einzeln an das Ergebnis angehängt und somit ständig alles hin- und herkopiert wird, aber es funktioniert immerhin.

und die .dcu mußt du nicht unbedingt mit anhängen.
- ich vermute mal die ist von deinem D7, also könnte diese maximal nur mit einem D7 nutzen (sind compilerabhängig)
- und dann ist die .pas ja da, welche ma nutzen kann :)

markus5766h 11. Jun 2009 16:12

Re: Unit ConvertCheck
 
Hallo,
@ himitsu : zu CheckInvalidChars, ich wollte irgendwann mal diese Zeichen nicht haben, gab irgendein
Kompatibilitätsproblem, lässt sich ja anpassen
zu RGB to Color : wird überarbeitet

himitsu 11. Jun 2009 17:39

Re: Unit ConvertCheck
 
In den alten/kurzen 8.3-Dateinamen (DOS) machen sie schon ein paar Problemchen.

Für einen einfachen Test, ob der Dateiname ungültige Zeichen enthält ist deine Funktion ja geeignet
und endgültig läßt sich eh nicht alles so prüfen, da es die Gültigkeiten ja von sooooovielen Faktoren abhängt :freak:

Nja, falls es dich interessiert, gibt es auch schon etwas dazu in der CodeLib-
z.B.:
http://www.delphipraxis.net/internal...ect.php?t=4498
http://www.delphipraxis.net/internal...ct.php?t=17470


Ansonsten :thumb:

DP-Maintenance 11. Jun 2009 18:41

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Open-Source" nach "Neuen Beitrag zur Code-Library hinzufügen" verschoben.
Wir haben soeben beschlossen, dass das eher in die Code-Library gehört als nach Open-Source.

markus5766h 11. Jun 2009 19:27

Re: Unit ConvertCheck
 
jo, danke, werd's mir mal anschauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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