AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

Ein Thema von Lisaaaa · begonnen am 28. Nov 2017 · letzter Beitrag vom 30. Nov 2017
Antwort Antwort
Seite 6 von 7   « Erste     456 7      
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#51

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 15:58
KOPIEREN und unter deinem "ButtonXClick" EINFÜGEN, das ist alles.

Delphi-Quellcode:
var
 Rezept: array [1 .. 25] of string;
 i: Integer;
 Gesucht: string;
 Gefunden: Boolean;
begin
 Gesucht := UpperCase(Edit1.Text);

 Rezept[1] := 'Apfelrotkohl';
 Rezept[2] := 'Apfelkuchen';
 Rezept[3] := 'Baerlauchhummus';
 Rezept[4] := 'Currywurst';
 Rezept[5] := 'Donauwelle';
 Rezept[6] := 'Eiersalat';
 Rezept[7] := 'Frikadellen';
 Rezept[8] := 'Gemuesepfanne';
 Rezept[9] := 'Heidelbeermarmelade';
 Rezept[10] := 'Italienischer_Nudelsalat';
 Rezept[11] := 'Jaegerschnitzel';
 Rezept[12] := 'Kuerbiscremesuppe';
 Rezept[13] := 'Linsensuppe';
 Rezept[14] := 'Mangomarmelade';
 Rezept[15] := 'Nudelauflauf';
 Rezept[16] := 'Omlette_mit_Tomaten';
 Rezept[17] := 'Pfifferlingsuppe';
 Rezept[18] := 'Quarkkeulchen';
 Rezept[19] := 'Rinderbraten';
 Rezept[20] := 'Schmandkuchen';
 Rezept[21] := 'Tomatensalat';
 Rezept[22] := 'Ungarisches_Gulasch';
 Rezept[23] := 'Vanillekipferl';
 Rezept[24] := 'Wirsinggemuese';
 Rezept[25] := 'Zucchinicremesuppe';

 Label9.Caption := 'Das Rezept ist nicht in der Rezeptsammlung vorhanden!';
 for i := 1 to 25 do
  begin
   if Pos(UpperCase(Gesucht), UpperCase(Rezept[i])) <> 0 then
    begin
     Label9.Caption := 'Das Rezept ist in der Rezeptsammlung vorhanden!';
     Break;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#52

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 16:03
Anstelle der Zeile mit IfThen eventuell:
Delphi-Quellcode:
  case Gefunden of
    true : Label9.Caption := 'Das Rezept ist in der Rezeptsammlung vorhanden!';
    false: Label9.Caption := 'Das Rezept ist nicht in der Rezeptsammlung vorhanden!';
  end;
Mein Delphi kommt mit dem IfThen zurecht.

Im Original steht nicht
Delphi-Quellcode:
Label9.Caption:=('Das Rezept ist in der Rezeptsammlung vorhanden!');
[IfThen(Gefunden,'','nicht ')]);
sondern Label9.Caption:=Format('Das Rezept ist in der Rezeptsammlung vorhanden!',[IfThen(Gefunden,'','nicht ')]); Format ist eine Funktion, die zur parametrisierten Ausgabe von Zeichenfolgen dient.

IfThen ist eine Funktion, die abhängig vom Wahrheitsgehalt des ersten Parameters den zweiten oder dritten Parameter ausgibt.

IfThen('ist dieses hier wahr','gebe diese aus','ansonsten jenes');
IfThen(1 = 2,'richtig','falsch');
IfThen(Gefunden,'','nicht ');
Wenn also in der vorherigen Schleife nichts gefunden wurde, so ist Gefunden = false und es wird nicht ausgegeben. Wurde etwas gefunden, so wird nur ein Leerstring (also '') ausgegeben.
  Mit Zitat antworten Zitat
Lisaaaa

Registriert seit: 28. Nov 2017
18 Beiträge
 
#53

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 16:05
Hallo,
nur nicht verzagen.

Delphi-Quellcode:
Gefunden:= False; // das sieht schöner aus
i := Low(Rezept); // beginnt also bei 1
repeat
  Gefunden := Pos(Gesucht,UpperCase(Rezept[i])) <> 0;
  Inc(i);

  // hier ist Gefunden entweder True oder False

until Gefunden or (i >= High(Rezept));

// hier ist Gefunden immer noch entweder True oder False

if Gefunden
  then //na was wohl, aber bitte ohne abschließendes Semikolon ???
  else //na was wohl ???

//Label9.Caption:= 'Das Rezept ist in der Rezeptsammlung vorhanden!';
//Label9.Caption:= 'Das Rezept ist in der Rezeptsammlung nicht vorhanden!';
Die na was wohl solltest du jetzt aber sinnvollem Label9.Caption ersetzen können, oder?


PS:
Label9.Caption:= Format('Das Rezept ist %sin der Rezeptsammlung vorhanden!',[IfThen(Gefunden,'','nicht ')]);
Das erklär mal dem Lehrer, da kennt er doch vielleicht gar nicht ...


Da fällt mir noch ein
until Gefunden or (i >= High(Rezept));
Muss das nicht (i > High(Rezept)); sein?

Danke, Danke!!! Es funktioniert endlich Tausend Dank!!!
  Mit Zitat antworten Zitat
Lisaaaa

Registriert seit: 28. Nov 2017
18 Beiträge
 
#54

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 16:11
Hab nur noch eine Frage, wenn ich es in Worte fassen müsste, macht die Prozedur was genau ? Sie fängt bei dem 1. Rezept an, schaut/vergleicht es mit dem Array Inhalt und dann ? Inc? was bedeutet das?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#55

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 16:33
Hab nur noch eine Frage, wenn ich es in Worte fassen müsste, macht die Prozedur was genau ? Sie fängt bei dem 1. Rezept an, schaut/vergleicht es mit dem Array Inhalt und dann ? Inc? was bedeutet das?
Inc(i) entspricht i := i + 1

Die Prozedure sucht in dem Array Rezept nach der ersten Übereinstimmung von Suchbegriff und Rezepteinträgen. Dabei wird die Groß-/Kleinschreibung ignoriert.

Am Ende wird ausgegeben, ob der Suchbegriff gefunden wurde oder nicht.

Um zu verstehen was die Routine macht, setze Dich hin und kommentiere jede Zeile, schreib zu jeder Zeile im Kommentar, was sie macht. Ähnlich wie hoika es in seinem Beispiel tat und gib Dich erst zufrieden, wenn wirklich jede Zeile kommentiert ist. Schreibe zu jeder Variabel, warum sie deklariete wurde und welche Aufgabe sie im weiteren Verlauf der Routine erfüllen soll.

Ausnahme ist das Befüllen des Arrays, hier reicht ein Kommentar für alle identischen Zeilen.

Wenn Du die Kommentare in verständlichem Deutsch schreibst, ergibt sich daraus fast von alleine die von Dir gewünschte Beschreibung zur Prozedur.

Sollte Dir das nicht gelingen, dann frag nach! Ein "Ich hab' ja fast alles verstanden bis auf ..." darf es nicht geben.

Das erscheint eventuell erstmal etwas übertrieben, aber es erhöht den Lerneffekt kolossal.

Und dass Du
Zitat von Lisaaaa:
Bin leider in Info nicht allzu begabt
schreiben musst, erledigt sich dann fast von alleine. Wenn Du Dich anstrengst sagen die anderen dann später:
Zitat von die anderen:
Frag mal Lisaaaa, die ist in in Info begabt!


Bei uns heißt es immer: Programmierung ist 3% Inspiration und 97% Transpiration.
Oder anders formuliert: Mit Fleiß, Geduld und Genauigkeit erreicht man hier sehr vieles.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#56

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 17:21
Mit dem Handy den Bildschirm abfotografieren kenne ich so nur aus der Generation 50+.
Weißt du nicht, wie du in Windows einen Screenshot erstellen kannst?

https://www.youtube.com/watch?v=a6B3cDCg5CU
Du machst Dir Freunde.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#57

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 19:54
Hallo,

das repeat until ist so ähnlich wie eine for-Schleife.

Du hättest auch Deinen Code aus #1 nehmen können.

Delphi-Quellcode:
Gefunden:= False;
for i:= 1 to 25 do
// oder besser for i:= Low(Rezept) to High(Rezept) do
begin
  Gefunden := Pos(Gesucht,UpperCase(Rezept[i])) <> 0;
  if Gefunden then break;
end;

if Gefunden
  then Label9.Caption := 'gefunden'
  else Label9.Caption := 'nicht gefunden'
Bei dir ist es jetzt so.
i=1
Wiederhole (Repeat)
Ermittle Rezept(i);
Inc(i) -> i=i+1 -> Nächstes Rezept
Solange (Until-Bedingung) (Until)

Das Repeat Until ist hier nicht notwendig, klappt aber auch statt der For-Schleife.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#58

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 28. Nov 2017, 20:02
Wobei Repeat-Until eine Fußschleife darstellt, d.h. die Schleifenbedingung wird erst nach dem ersten Durchlauf überhaupt geprüft. Das kann zu unerwünschten Nebenwirkungen führen, wenn man das auf leere Listen bzw. Arrays loslässt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#59

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 29. Nov 2017, 11:06
Mit dem Handy den Bildschirm abfotografieren kenne ich so nur aus der Generation 50+.
Weißt du nicht, wie du in Windows einen Screenshot erstellen kannst?

https://www.youtube.com/watch?v=a6B3cDCg5CU
Du machst Dir Freunde.

Gruß
K-H
Ich hätte einschränkend schreiben sollen, dass dies selbstverständlich nicht für Leute aus dem IT-Umfeld - so wie du einer bist - gilt.
Ich setzte dies stillschweigend voraus.

Aber frage doch mal deine gleichaltrigen Verwandten, Bekannten und Freunde, die einen Beruf im Nicht-IT-Umfeld haben/hatten, ob sie mal ein Abbild von ihren PC-Desktop machen können und lass dich überraschen was da kommt.

Geändert von TiGü (29. Nov 2017 um 11:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#60

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht

  Alt 29. Nov 2017, 12:45
Aber frage doch mal deine gleichaltrigen Verwandten, Bekannten und Freunde, die einen Beruf im Nicht-IT-Umfeld haben/hatten, ob sie mal ein Abbild von ihren PC-Desktop machen können und lass dich überraschen was da kommt.
Die Kollegen aus der Abteilung die ich betreut habe, waren nicht virtuos im Umgang mit dem Screenshotprogramm, aber ein Foto mit dem Smartphone ist mir noch nicht unter gekommen. Gleiches gilt auch für meinen Bekanntenkreis. Da lebe ich wohl auf einer Insel der Glückseligen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 7   « Erste     456 7      


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 11:02 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