Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ich und Delphi -> ein Problem :D

Empfohlene Antworten

Hy Leutz,

ich bins mal wieder mit Delphi.

zu meinem Problem:

Ich muss ein Programm schreiben das mir nachdem ich einen Text eingegeben habe die Anzahl der Wörter, Zahlen und Zeichen(. : ; ,)

ausgibt.

hier der Code den ich geschrieben habe


program Uebung9;

{$APPTYPE CONSOLE}

uses

  sysutils;


var

text:string;

Zzahl:integer;                          // Variablen

Zwort:integer;

Zzeichen:integer;

Zustand:string;

i:integer;

begin

write('Mit diesem Programm wird errechnet, nach Eingabe eines Textes, wieviele Woerter und Saetze der Text beinhaltet');

writeln;

write('Bitte geben Sie einen Text ein: ');     // Text eingeben

Readln(text);                                  // Text einlesen

Zzahl:=0;

Zzeichen:=0;

Zwort:=0;

if length(text)=0                                       //wenn kein Text eingegeben wird

then begin

write('Sie muessen einen Text eingeben');

end

else

if (text[1]>='0') and (text[1]<='9')

//if (text[1]='0') and (text[1]='1') and (text[1]='2') and (text[1]='3') and (text[1]='4') and (text[1]='5') and (text[1]='6') and (text[1]='7') and (text[1]='8') and (text[1]='9')

then

Zustand:='Zahl' else

  if (text[1]='.') or (text[1]=',') or (text[1]=';') or (text[1]=':')

  then

  Zustand:='Zeichen' else

    if (text[1]=' ')

    then

    Zustand:='kein Wort'

    else

    zustand:='Wort';

for i:= 2 to length(text)

do begin

if Zustand='Wort'

then begin

  if (text[i]>='0') and (text[i]<='9')

  then begin

  Zustand:='Zahl';

  Zwort:=Zwort +1;

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    Zwort:=Zwort +1;

    end else

      if (text[i]=' ')

      then begin

      Zustand:='Kein Wort';

      Zwort:=Zwort +1;

      end

else

end;

if Zustand='Zeichen'

then begin

  if (text[i]>='A') or (text[i]<='Z')

  then begin

  Zustand:='Wort';

  Zzeichen:=Zzeichen +1

  end else

   if (text[i]>='0') and (text[i]<='9')

   then begin

   Zustand:='Zahl';

   Zzeichen:=Zzeichen +1;

   end else

     if (text[i]=' ')

     then begin

     Zustand:='kein Wort';

     Zzeichen:=Zzeichen +1;

end else

end;

if Zustand='Zahl'

then begin

  if (text[i]>='A') and (text[i]<='Z')

  then begin

  Zustand:='Wort';

  Zzahl:=Zzahl +1

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    Zzahl:=Zzahl +1;

    end else

      if (text[i]=' ')

     then begin

     Zustand:='kein Wort';

     Zzahl:=Zzahl +1;

end else

end;

if Zustand='kein Wort'

then begin

  if (text[i]>='A') and (text[i]<='Z')

  then begin

  Zustand:='Wort';

  end else

    if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

    then begin

    Zustand:='Zeichen';

    end else

       if (text[i]>='0') and (text[i]<='9')

       then begin

       Zustand:='Zahl';

end

else

end;

end;

write(format('Ihr Text hat %d Woerter',[Zwort]));

writeln;

write(format('Ihr Text hat %d Zeichen',[Zzeichen]));

writeln;

write(format('Ihr Text hat %d Zahlen',[Zzahl]));

readln;

end.

Ich weis nicht woran es liegt das es nich funzt.

danke im voraus für eure Antworten

euer Cruzito

Option Explicit

Private Sub Command1_Click()

Uhhhhhhh....

Ein Code ist ja grauenvoll. Der besteht ja nur aus IF befehlen. Blöderweise kann ich kein Delphi aber weil Delphi und Visual Basic ähnlich sind hab ich mal dein Programm in VB geschrieben. Vieleicht hilft es dir ja weiter, wenn du den Code in Delphi schreibst.

Dim Text As String 'Variablen werden Deklariert

Dim N As Integer

Dim TextZeichen As String * 1

Dim Punkt As Integer, Komma As Integer, Zahl As Integer, Buch As Integer

Text = Text1 'der Text wird zugewiesen

For N = Len(Text) To 0 Step -1 'Die schleife fährt die Zeichenkette ab

TextZeichen = Mid$(Text, N, 1) 'Ich holle mir ein Zeichen aus der Zeichenkette

If TextZeichen = "." Then Punkt = Punkt + 1 'wenn Zeichen . ist dann Zähler +1

If TextZeichen = "," Then Komma = Komma + 1 'wenn Zeichen , ist dann Zähler +1

Select Case TextZeichen

Case 1 To 9

Zahl = Zahl + 1

Case "a" To "z"

Buch = Buch + 1

End Select

If N = 1 Then Exit For

Next

MsgBox ("Punkt: " & Punkt)

MsgBox ("Komma: " & Komma)

MsgBox ("Zahlen: " & Zahl)

MsgBox ("Buchstaben: " & Buch)

End Sub

Der Ansatz von X_22 ist richtig. Mit einer

for...to Schleife sparts du dir eine Menge

Geschreibsel (In diesem Fall min. 60%, soweit ich das sehen kann) und lass diese ständigen if..then..else-Bedingungen bloß weg, wenn da nämlich ein Laufzeit-Fehler drin ist, schmiert dir das Ding komplett ab

Danke für euere Antworten!!

Ich habe das ganze nun durch den debuggmodus laufen lassen und dort hab ich gesehen das er wenn er den Zustand wechselt aus dm neuen zustand nicht mehr heraus geht. Keine ahnung warum.

@dirtydog

Ich arbeite mit der Delphi 5.0 Enterprise Edition. Kannst du mir vielleicht den Ansatz aufschreiben wie ich das ohne if und else mache. Eine For Schleife ist ja schon drin.

Es reicht ja für einen Zustabd den rest brauch ich ja dann nur übertragen. Ich muss noch sagen das ich and er Aufgabe schon 2 Tage dran bin und es einfach nicht auf die reihe bekomme.

Das Was x_22 hingeschrieben hat check ich überhaupt nicht da ich null ahnung von VB hab sorry.

euer Cruzito

hy ich hab den code nochmal neu geschrieben hoff er ist jetzt ein wenig verständlicher.


program Uebung9a;

{$APPTYPE CONSOLE}

uses

  sysutils;

var

text       :string;

Zustand    :string;

Zwort      :integer;

Zzeichen   :integer;

Zzahl      :integer;

i          :integer;

begin

write('Bitte geben Sie einen Text ein: ');

read(text);

if length(text)=0

then begin

write('Sie haben keinen Text eingegeben, bitte starten Sie das Progeamm neu')

end

else begin

end;

  if (text[1]='.') or (text[1]=',') or (text[1]=';') or (text[1]=':')

  then begin

  Zustand:='Zeichen';

  end else

  if (text[1]='0') or (text[1]='1') or (text[1]='2') or (text[1]='3') or (text[1]='4') or (text[1]='5') or (text[1]='6') or (text[1]='7') or (text[1]='8') or (text[1]='9')

  then begin

  Zustand:='Zahl';

  end else

    if (text[1]=' ')

    then begin

    Zustand:='kein Wort';

    end

else

Zustand:='Wort';


Zzahl:=0;

Zzeichen:=0;

Zwort:=0;


for i:= 2 to length(text)

do begin

if Zustand='Zeichen'

then begin

  if (text[i]='0') and (text[i]='1') or (text[i]='2') or (text[i]='3') or (text[i]='4') or (text[i]='5') or (text[i]='6') or (text[i]='7') or (text[i]='8') or (text[i]='9')

  then begin

  Zustand:='Zahl';

  Zzeichen:=(Zzeichen +1);

  end;

    if (text[i]>='A') and (text[i]<='Z') and (text[i]>='a') and (text[i]<='z')

    then begin

    Zustand:='Wort';

    Zzeichen:=(Zzeichen +1);

    end;

      if (text[i]=' ')

      then begin

      Zustand:='kein Wort';

      Zzeichen:=(Zzeichen +1);

           end;

      end else


if Zustand='Wort'

then begin

   if (text[i]='0') and (text[i]='1') and (text[i]='2') and (text[i]='3') and (text[i]='4') and (text[i]='5') and (text[i]='6') and (text[i]='7') and (text[i]='8') and (text[i]='9')

   then begin

   Zustand:='Zahl';

   Zwort:=(Zwort +1);

   end;

     if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

     then begin

     Zustand:='Zeichen';

     Zwort:=(Zwort +1);

     end;

       if (text[i]=' ')

       then begin

       Zustand:='kein Wort';

       Zwort:=(Zwort +1);

       end;

       end else


if Zustand='Zahl'

then begin

     if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

     then begin

     Zustand:='Zeichen';

     Zzahl:=(Zzahl +1);

     end;

       if (text[i]>='A') and (text[i]<='Z')

       then begin

       Zustand:='Wort';

       Zzahl:=(Zzahl +1);

       end;

         if (text[i]=' ')

         then begin

         Zustand:='kein Wort';

         Zzahl:=(Zzahl +1);

         end;

         end else


if Zustand='kein Wort'

then begin

  if (text[i]='.') or (text[i]=',') or (text[i]=';') or (text[i]=':')

  then begin

  Zustand:='Zeichen';

  end;

     if (text[i]>='A') and (text[i]<='Z') and (text[i]>='a') and (text[i]<='z')

    then begin

    Zustand:='Wort';

    end;

      if (text[i]='0') and (text[i]='1') and (text[i]='2') and (text[i]='3') and (text[i]='4') and (text[i]='5') and (text[i]='6') and (text[i]='7') and (text[i]='8') and (text[i]='9')

      then begin

      Zustand:='Zahl';

      end

end;

end;



write(format('Ihr Text hat %d Woerter',[Zwort]));

writeln;

write(format('Ihr Text hat %d Zahlen',[Zzahl]));

writeln;

write(format('Ihr Text hat %d Zeichen',[Zzeichen]));

readln;

readln;

end.

euer Cruzito

[Dieser Beitrag wurde von Cruz Candalaria am 12. Januar 2001 editiert.]

hallo,

so wie ich es verstanden haben sollen vier beliebige wörter eingegeben und dann sortiert werden. hier meine lösung:

program Project1;

{$APPTYPE CONSOLE}

uses sysutils, Classes;

var

i: Integer;

WortList: TStringList;

Wort: string;

begin

WortList := TStringList.Create;

for i := 0 to 3 do

begin

WriteLn('Bitte Wort ' + IntToStr(i + 1) + ' eingeben:');

ReadLn(Wort);

WortList.Add(Wort);

end;

WriteLn('Woerter sortieren? <Enter>');

WortList.Sort;

for i := 0 to 3 do

begin

Wort := WortList;

WriteLn(Wort);

end;

Read(i); //Nur damit konsole nicht gleich verschwindet.

end.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.