Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [Delphi] MatchesMask für EditMask (https://www.delphipraxis.net/144507-%5Bdelphi%5D-matchesmask-fuer-editmask.html)

Koolance 9. Dez 2009 11:09


[Delphi] MatchesMask für EditMask
 
Hallo,
ich habe folgendes Problem. Ich setzte bei ein paar Feldern manchmal EditMask (im Feld des TTable). Es können aber schon Werte in dem Feld stehen die der Maske nicht entsprechen.
Jetzt möchte ich den alten Wert wenn er der Maske nicht entspricht löschen. MatchesMask funktioniert wohl leider nur für Dateinamen.

Hier ein kleines aus dem Code der leider nicht funktioniert wie gewollt:
Code:
    data.TAukopfAUKVERSNR.EditMask:='000/00/000000000;1;_';
    data.TAukopfAUKABSCHADENNR.EditMask:='000-00-00000000-0;1;_';
    data.TAukopfAukABSZEIT.EditMask:='00.00.0000';


    if data.TAukopf.State in [dsedit,dsinsert] then
    begin
      if not MatchesMask(data.TAukopfAUKVERSNR.AsString,'000/00/000000000;1;_') then
        data.TAukopfAUKVERSNR.Value:='';
      if not MatchesMask(data.TAukopfAUKABSCHADENNR.AsString,'000-00-00000000-0;1;_') then
        data.TAukopfAUKABSCHADENNR.Value:='';
      if not MatchesMask(data.TAukopfAukABSZEIT.AsString,'00.00.0000') then
        data.TAukopfAukABSZEIT.Value:='';
    end;

DP-Maintenance 9. Dez 2009 11:37

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Programmieren allgemein" nach "Datenbanken" verschoben.

himitsu 9. Dez 2009 12:36

Re: [Delphi] MatchesMask für EditMask
 
Würde sows ausreichen?
Delphi-Quellcode:
s := data.TAukopfAUKVERSNR.Value;
data.TAukopfAUKVERSNR.Value := '';
data.TAukopfAUKVERSNR.EditMask := '000/00/000000000;1;_';
data.TAukopfAUKVERSNR.Value := s;

Koolance 9. Dez 2009 12:43

Re: [Delphi] MatchesMask für EditMask
 
Habe es gerade ausprobiert, in der hoffung das es eine Exception schmeißt. Aber leider schmeißt der Wert wird einfach abgeschnitten.

Code:
  s := data.TAukopfAUKVERSNR.Value; //s='1111111111'
  data.TAukopfAUKVERSNR.Value := '';
  data.TAukopfAUKVERSNR.EditMask := '000/00/000000000;1;_';
  data.TAukopfAUKVERSNR.Value := s; //Danach wir im Feld angezeigt: 111.

himitsu 9. Dez 2009 12:49

Re: [Delphi] MatchesMask für EditMask
 
OK, man könnte noch diese Zeile anhängen
Delphi-Quellcode:
if data.TAukopfAUKVERSNR.Value <> s then data.TAukopfAUKVERSNR.Value := '';
Delphi-Quellcode:
procedure SetNewMask(Feld: KeineAhnungWas; Mask: String);
var s: String;
begin
  s := Feld.Value;
  Feld.Value := '';
  Feld.EditMask := '000/00/000000000;1;_';
  Feld.Value := s;
  if Feld.Value <> s then Feld.Value := '';
end;

SetNewMask(data.TAukopfAUKVERSNR, '000/00/000000000;1;_');

Ansonsten müßte man "nur" erstmal rausfinden, über welche Funktion wirklich verglichen wird.

Koolance 9. Dez 2009 12:59

Re: [Delphi] MatchesMask für EditMask
 
Code:
if data.TAukopfAUKVERSNR.Value <> s then data.TAukopfAUKVERSNR.Value := ''
Fast perfekt, aber in der Datenbank bleibt leider der alte Sring erhalten. Die vorerst endgültige Lösung:
Code:
if versnrDBEdit.text <> s then data.TAukopfAUKVERSNR.Value := ''
Ist zwar nicht schön, aber es funktioniert :)


BIG THX

Zitat:

Ansonsten müßte man "nur" erstmal rausfinden, über welche Funktion wirklich verglichen wird.
Das "nur" sagt alles :) Aber sollte ich mal Zeit haben werde ich ein bisschen suchen.

Koolance 9. Dez 2009 13:03

Re: [Delphi] MatchesMask für EditMask
 
Geht noch besser:
Code:
if versnrDBEdit.text <> data.TAukopfAUKVERSNR.Value then data.TAukopfAUKVERSNR.Value := ''
So spare ich mir die Variablen :)


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