Autor Beitrag
csigg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: Do 09.06.05 15:06 
Ich habe eine Tedit in dem entweder die Betriebsstätten Nummer oder der Betriebsstättenname eingegeben werden kann.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
procedure Tfrm_Main.prc_NLSuche;
var sqlstatement: String;
    anzahl: Integer;
    eingabe: String;
    ziffer: boolean;
begin
     anzahl := 0;
     eingabe := edtNLSuche.Text;

   //Test ob Eingabefeld leer, oder nicht, falls ja, Abbruch
     if length(eingabe) < 1 then
     begin
          MessageDlg('Es wurd nix angegeben',mtError,[mbOK],0);
          exit;
     end;

  //Test ob Eingabe mit Ziffer oder Buchstabe anfängt
  case eingabe[1of
  '0'..'9':       ziffer := true;
  else            ziffer := false;
  end;

  if ziffer then
  begin
       for  lenght(eingabe) do
       begin

       end;

  //Setzten des SQL-Befehl entsprechen des oberen Test
     if ziffer then
     begin
      sqlstatement := 'SELECT * FROM NL ' +
                      'WHERE NLNR = ' + edtNLSuche.Text;
     end
     else
     begin
      sqlstatement := 'SELECT * FROM NL ' +
                      'WHERE NAME LIKE ''%' + edtNLSuche.Text + '%''';
     end;
......
[u][/u]

Jetzt sollte ich allerdings noch sicherstellen das wenn es sich um ziffern handelt, dass alles was nicht Ziffer ist herausgefiltert wird, bzw. wenn es sich um Buchstaben handelt sollten alle Ziffern raus. Das erste Zeichen ist dabei das enscheidende.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 09.06.05 15:12 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
s := 'asdasdasdasd43wersfgg3456erfdsfsdf';

if (ord(s[1]) >= ord('0')) and (ord(s[1]) <= ord('9')) then
begin
  for i := 1 to length(s) do
    if (ord(s[i]) >= ord('0')) and (ord(s[i]) <= ord('9')) then
      t := t+s[i];
end else
if (upcase(ord(s[1])) >= ord('A')) and (upcase(ord(s[1])) <= ord('Z')) then
begin
  for i := 1 to length(s) do
    if (upcase(ord(s[i])) >= ord('A')) and (upcase(ord(s[i])) <= ord('Z')) then
      t := t+s[i];
end;


ungetestet

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
csigg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: Do 09.06.05 15:36 
Funktioniert nicht, es meldet immer Inkopatible Typen.

Ich schaus mir mal an und poste dann den richtigen code.
csigg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: Do 09.06.05 15:44 
Du hast einfach das Ord und das Upcase verdreht. Berichtigte Version:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if (ord(eingabe[1]) >= ord('0')) and (ord(eingabe[1]) <= ord('9')) then
        begin
             for i := 1 to length(eingabe) do
                 if (ord(eingabe[i]) >= ord('0')) and (ord(eingabe[i]) <= ord('9')) then
                    t := t+eingabe[i];
                 end else
        if (ord(Upcase(eingabe[1])) >= ord('A')) and (ord(Upcase(eingabe[1])) <= ord('Z')) then
        begin
             for i := 1 to length(eingabe) do
                 if (ord(Upcase(eingabe[i])) >= ord('A')) and (ord(Upcase(eingabe[i])) <= ord('Z')) then
                    t := t+eingabe[i];
        end;

Funktioniert perfekt
HiteHower
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 04.07.05 11:34 
Hallo Leute ich versuch mir seit 2 Tagen selber bisschen Delphi beizubringen!
Hab also ne Frage:
Wie kann ich in einem Edit bewirken das keine Zahlen eingegeben werden können?
csigg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 706

WIn XP, Win NT, Win2000, Suse8.0
Delphi 5, Delphi 6
BeitragVerfasst: Mo 04.07.05 13:32 
du könntest mit OnKeyPress jede Tastatureingabe abfangen, prüfen ob es ne Zahl, wenn ja nicht darstellen, aber vielleicht gibt es auch noch ne bessere Methode.