AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lehre Zeichenkette prüfen???

Ein Thema von lurch · begonnen am 30. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
lurch

Registriert seit: 30. Mai 2004
Ort: Zittau
11 Beiträge
 
Delphi 7 Enterprise
 
#1

Lehre Zeichenkette prüfen???

  Alt 30. Mai 2004, 23:52
Also ich hab ein kleines Problem, ich muss gerade ne Abschlußarbeit in Informatik schreiben (Kl.11)!
Da ich zwei Fälle bearbeit sind 4 Eingabefälder vorhanden es dürfen aber je Fall nur 3 Ausgefüllt werden. Wie sag ich dem Programm (if-then-Anweisung), dass wenn Edit4 frei und die anderen Edit-Felder besetzt sind er die Eingabe bestätigt anderenfals eine Fehlermeldung raus gibt. Probiert hab ich es so klappt aber nicht: Formatierter Pascal-Quellcode:  if ((Edit4.Text = '') and not((Edit1.Text = '') and (Edit2.Text = '') and (Edit3.Text = ''))) then
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Lehre Zeichenkette prüfen???

  Alt 30. Mai 2004, 23:55
hallo lurch,

willkommen in der dp.

schaue mal in der oh nach length.


raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3

Re: Lehre Zeichenkette prüfen???

  Alt 30. Mai 2004, 23:58
Hi, und herzlich willkommen in der DP!
Ich würde es wie folgt schreiben:

Delphi-Quellcode:
begin
  If (Edit4.Text = '') and (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
    //do something
end;
Wenn ich mich nicht irre kann man auch noch um die Abfrage ob Edit1 bis Edit3 nicht leer sind ne Klammer setzen, drüfte aber auch so funzen

mfg phlux

PS: Leer kommt nicht vom Lehren
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
lurch

Registriert seit: 30. Mai 2004
Ort: Zittau
11 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 00:13
Also das klappt auch nicht der Fehler muss daran liegen, dass das Programm nicht weiß was ich mit den beiden '' will. Gibt es noch eine andere Möglichkeit dem Prog zu sagen das er es mit einem "leeren" Editfeld zu tun hat???
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 00:18
Moin!

Kann es sein, das die Editfelder nicht ganz leer sind, sondern ein Leerzeichen drinne ist/sind?

wirklich leer:
Delphi-Quellcode:
begin
  If (Length(Edit4.Text) = 0) and (Length(Edit1.Text) > 0) and (Length(Edit2.Text) > 0) and (Length(Edit3.Text) > 0) then
    //do something
end;
Ignorieren von Leerzeichen:
Delphi-Quellcode:
begin
  If (Length(Trim(Edit4.Text)) = 0) and (Length(Trim(Edit1.Text)) > 0) and (Length(Trim(Edit2.Text)) > 0) and (Length(Trim(Edit3.Text)) > 0) then
    //do something
end;
MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 00:18
If length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then zu langsam

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
lurch

Registriert seit: 30. Mai 2004
Ort: Zittau
11 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 00:28
Also ich glaub ihr hab mich schon ein ganzes stückchen weiter gebracht. Klappern tut es aber immer noch nicht leider is mir schon fast peinlich, aber ich schreib hier jetzt einfach ma den Quelltext für den Ablauf dar, der prüfen soll ob alle Eingaben regelkonform sind:
Delphi-Quellcode:
function detest(a,b,c:real):boolean;
  begin
    if ((a+b>c) and (a+c>b)and (b+c>a)) then result:= true
    else result:= false
  end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,gamma:real; g:integer;
  begin
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.Itemindex;
  case g of
    0:begin
        c:=StrToFloat(Edit3.Text);
             If length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
            begin
              if detest(a,b,c)=true then
              begin
                Showmessage ('Ihre Eingaben sind richtig');
                exit
                end
            else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
            end
          else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
          end;
    1: begin
        gamma:=StrToFloat(Edit4.Text);
          If length(Edit3.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit4.Text) <> 0)) then
            if gamma <= 180 then MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
              else begin
                    ShowMessage ('Ihre Eingaben sind richtig');
                    exit
                    end
            else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
      end;
  end;
  end;
end.
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 00:48
Hallo lurch,
was funktioniert denn nicht? Was für Fehlermeldungen kommen eventuell?
Desweiteren würde ich sagen, dass du zwei Klammern vegessen hast.
If (length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then bzw.
If (length(Edit3.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit4.Text) <> 0)) then Tschüß Markus
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#9

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 01:00
man war das ne geburt ,versuche es mal so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,
    b,
    c,
    gamma:real;
    g:integer;
begin
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.ItemIndex;
  case g of
    0: begin
        c:=StrToFloat(Edit3.Text);
        If ((length(Edit4.Text) = 0) and (a <> 0) and (b <> 0) and (c <> 0) ) then
           begin
            if detest(a,b,c) then
             begin
               Showmessage ('Ihre Eingaben sind richtig');
               exit;
             end;
           end else
                 MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
           end;

    1: begin
        gamma:=StrToFloat(Edit4.Text);
        If ((length(Edit3.Text) = 0) and (a <> 0) and (b <> 0) and (gamma <> 0)) then
          begin
          if gamma > 180 then
             begin
               ShowMessage ('Ihre Eingaben sind richtig');
               exit;
             end;
          end else
           MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
         end;
  end;
  end;
end.
schau dir auch mal die die funktion detest an,die schein nicht zu funktionieren
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#10

Re: Lehre Zeichenkette prüfen???

  Alt 31. Mai 2004, 03:32
Ich will ja nichts sagen, aber der kommt gar nicht bis zur Fehlermeldung wenn der Benutzer zwei Felder freigelassen hat. Die Begründung liegt in diesem Code:
Delphi-Quellcode:
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.ItemIndex;
  case g of
    0: begin
        c:=StrToFloat(Edit3.Text);
Ist einer von den drei Edits noch leer, so wirst du mit einem EConvertError aus der Funktion fliegen. Ich würd mal try-except oder TryStrToFloat verwenden. Ansonsten kannst du hier gar keine ungültige Eingabe abfangen, die kommt durch ne Exception.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 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