Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht (https://www.delphipraxis.net/194483-frage-zu-rezeptsammlung-suchfunktion-durch-array-funktioniert-nicht.html)

Lisaaaa 28. Nov 2017 13:51

Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe eine rezeptsammlung erstellt, nun eine Suchfunktion eingefügt. Mittels eines Arrays. Allerdings funktioniert es mit dem Else Zweig nicht. Egal Was ich ins edit Feld eingebe, auch wenn das Rezept nicht im Array gespeichert ist, sagt es, dass es vorhanden ist.. könnte mir jemand helfen und sagen wo der Fehler liegt ? Dringend!! Muss es am Donnerstag abgeben(Projekt)

SProske 28. Nov 2017 13:58

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Könntest du den Code bitte als Text (und in Delphi-Tags) posten, anstatt als Bild?

LTE5 28. Nov 2017 14:00

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Dein If ist irgendwie ganz komisch.

Muss das nicht eher so sein?
Delphi-Quellcode:
if Pos(UpperCase(Gesucht), UpperCase(Rezept[s])) > 0 then
> 0 bedeutet, dass "Gesucht" in "Rezept[s]" vorkommt.
> 0, weil wenn Gesucht Wirsing ist und Rezept[s] Wirsinggemuese, dann ist das W von Wirsing an Position 1 gefunden worden.
= 0 bedeutet, dass Gesucht nicht gefunden wurde.

Lisaaaa 28. Nov 2017 14:05

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Wieso ausgerechnet „>“? Muss die Arbeit ich verteidigen deshalb die Frage 😅

LTE5 28. Nov 2017 14:07

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

> 0, weil wenn Gesucht Wirsing ist und Rezept[s] Wirsinggemuese, dann ist das W von Wirsing an Position 1 gefunden worden.
Deshalb.

Gesucht: Wirsing
Rezept[s] = Wirsinggemuese

Resultat: Wirsinggemuese

Pos = 1 in diesem Fall, da die Zählung bei 1 beginnt (W = erster Buchstabe in Wirsinggemuese).

Deshalb auf > 0 testen.
Und = 0 heißt dann "nicht gefunden".

TiGü 28. Nov 2017 14:12

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
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

Lisaaaa 28. Nov 2017 14:17

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Bin neu hier und mache das hier grad alles auf dem Handy, deshalb mit bild! :D

himitsu 28. Nov 2017 14:18

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

Zitat von Lisaaaa (Beitrag 1387355)
Wieso ausgerechnet „>“? Muss die Arbeit ich verteidigen deshalb die Frage 😅

Wieso überhaupt so ein Vergleich?

Ihr wollt nicht di Position wissen, sondern nur ob was drin ist.
Delphi-Quellcode:
pos > 0
oder
Delphi-Quellcode:
pos <> 0
ist hier also das Gleiche. (0 = nicht gefunden)

Aber warum die Position, welche ihr nicht wissen wollt?
Delphi-Referenz durchsuchenContainsStr
Delphi-Referenz durchsuchenContainsText

Lisaaaa 28. Nov 2017 14:24

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Ich will quasi, dass mein Programm, wenn Eingabe edit Feld und Array übereinstimmen, im Label ausgibt ‚vorhanden‘ wenn dies nicht der Fall ist ‚nicht vorhanden.. bisher funktioniert leider kein Vorschlag. Habt ihr noch mehr Ideen ? Würde mich freuen wenn ich es gelöst bekommen

LTE5 28. Nov 2017 14:25

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

wenn Eingabe edit Feld und Array übereinstimmen
Wenn Gesucht vorkommt oder übereinstimmt ?

Lisaaaa 28. Nov 2017 14:27

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Wenn das gesuchte vorkommt. Sprich Wirsinggemuese Eingabe -> (im Array vorhanden):vorhanden

LTE5 28. Nov 2017 14:28

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

Zitat von himitsu (Beitrag 1387359)
Zitat:

Zitat von Lisaaaa (Beitrag 1387355)
Wieso ausgerechnet „>“? Muss die Arbeit ich verteidigen deshalb die Frage 😅

Wieso überhaupt so ein Vergleich?

Ihr wollt nicht di Position wissen, sondern nur ob was drin ist.
Delphi-Quellcode:
pos > 0
oder
Delphi-Quellcode:
pos <> 0
ist hier also das Gleiche. (0 = nicht gefunden)

Aber warum die Position, welche ihr nicht wissen wollt?
Delphi-Referenz durchsuchenContainsStr
Delphi-Referenz durchsuchenContainsText


TiGü 28. Nov 2017 14:29

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Schreib mal bitte folgendes (die drei ... natürlich nicht hinschreiben, ist eine verkürzte Darstellung!):

Delphi-Quellcode:
for ... do
if ... then
  begin
    Label9.Caption := 'Hier steht dein Text';
    Break; // <--- das wird der entscheidende Punkt sein!
  end else
...
Du verlässt die Schleife nicht im Erfolgsfall. Darum musst du ein Break hinmachen!

Klaus01 28. Nov 2017 14:30

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

Wenn das gesuchte vorkommt. Sprich Wirsinggemuese Eingabe -> (im Array vorhanden):vorhanden
dann musst Du auf Gleichheit prüfen
Gesucht = ArrayElement[x]

Oder sameText() verwenden.

Grüße
Klaus

Aviator 28. Nov 2017 14:31

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

Zitat von Lisaaaa (Beitrag 1387360)
bisher funktioniert leider kein Vorschlag. Habt ihr noch mehr Ideen ?

Ich glaube eher, dass du die Vorschläge falsch umsetzt. Poste doch mal den Delphi Code in Delphi Tags. Der Helm über dem Editor im Forum. Das sieht dann so aus.

Code:
[DELPHI]
  // Dein SourceCode hier
[/DELPHI]
Dann sieht der SourceCode gleich viel besser und viel lesbarer aus.
Delphi-Quellcode:
if (Pos(StringPart, MainString) <> 0) then begin
  // Do something
end;

TiGü 28. Nov 2017 14:33

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Süß wie alle sich auf das String-Problem stürzen. :twisted:

Liebe Programmierkollegen: Es fehlt das BREAK in der SCHLEIFE! 8-)

Klaus01 28. Nov 2017 14:37

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

Zitat von TiGü (Beitrag 1387367)
Süß wie alle sich auf das String-Problem stürzen. :twisted:

Liebe Programmierkollegen: Es fehlt das BREAK in der SCHLEIFE! 8-)

Nur ob es mit einem Break getan ist?
Wenn das Element das letzte der Liste ist, gibt es 24 x mal die Ausgabe "nicht gefunden/enthalten".

Grüße
Klaus

hoika 28. Nov 2017 14:38

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Hallo,
auch mit dem break ist der Code nicht so schön lesbar.

Delphi-Quellcode:
var
  bGefunden: Boolean;
begin
  bGefunden:= False;
  for do
  begin
    if bla then
    begin
      bGefunden := True;
      break;
    end;
  end;

  if bGefunden
    then Label9.Caption := 'gefunden'
    else Label9.Caption := 'nicht gefunden';

Lisaaaa 28. Nov 2017 14:39

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
procedure TForm1.Button6Click(Sender: TObject);
Var Rezept:array[1..25] of string;
s:Integer;
Gesucht:String;
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;
For s:=1 to 25 Do
If Pos (Uppercase(Gesucht),UpperCase(Rezept[s]))<> 0 Then
begin
Label9.Caption:='Das Rezept ist in der Rezeptsammlung vorhanden!';
Break;
end
Else
begin
Label9.Caption:='Das Rezept ist nicht in der Rezeptsammlung vorhanden!';
end;
end;

So sieht es jetzt aus. Wenn ich zuerst was eingebe, was nicht vorhanden ist zeigt es dann an '...nicht vorh.'. Aber wenn ich dann etwas eingebe was vorhanden ist, auf den button klicke, passiert nichts und das '...nicht vorh.' bleibt stehen !:O

Delphi.Narium 28. Nov 2017 14:42

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Delphi-Quellcode:
Label9.Caption:='Das Rezept ist nicht in der Rezeptsammlung vorhanden!';
For s:=1 to 25 Do
begin
  If Pos (Uppercase(Gesucht),UpperCase(Rezept[s]))<> 0 Then
  begin
    Label9.Caption:='Das Rezept ist in der Rezeptsammlung vorhanden!';
    Break;
  end;
end;

TiGü 28. Nov 2017 14:45

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

Zitat von hoika (Beitrag 1387369)
Hallo,
auch mit dem break ist der Code nicht so schön lesbar.

Delphi-Quellcode:
var
  bGefunden: Boolean;
begin
  bGefunden:= False;
  for do
  begin
    if bla then
    begin
      bGefunden := True;
      break;
    end;
  end;

  if bGefunden
    then Label9.Caption := 'gefunden'
    else Label9.Caption := 'nicht gefunden';

Das ist genau die Art von Variablenbenennung und Codeformatierung, die man eigentlich nicht zeigen sollte. :roll:

Klaus01 28. Nov 2017 14:45

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
und vielleicht noch auf Gleichheit prüfen.
Es soll ja nicht Vanille gefunden werden - sondern Vanillekipferl.

Grüße
Klaus

Lisaaaa 28. Nov 2017 14:49

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Hast du einen passenden Quelltext ? Problem: Eingabe von 'hjb jj' -> 'nicht vorh.' Danach sofortige Eingabe 'Apfelrotkohl' -> 'nicht vorhanden'...Habe den eindruck, das Programm führt nichts aus nachdem man erneut auf button klickt und es eig sagen müsste 'vorh.'

LTE5 28. Nov 2017 14:52

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Hier wurde schon einer geschrieben

Zitat:

Zitat von Delphi.Narium (Beitrag 1387371)
Delphi-Quellcode:
Label9.Caption:='Das Rezept ist nicht in der Rezeptsammlung vorhanden!';
For s:=1 to 25 Do
begin
  If Pos (Uppercase(Gesucht),UpperCase(Rezept[s]))<> 0 Then
  begin
    Label9.Caption:='Das Rezept ist in der Rezeptsammlung vorhanden!';
    Break;
  end;
end;


Lisaaaa 28. Nov 2017 14:57

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Geht nicht. es sagt, dass es nicht vorhanden ist, egal ob es so ist oder nicht :(

TiGü 28. Nov 2017 15:06

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Lisaaaa (Beitrag 1387377)
Geht nicht. es sagt, dass es nicht vorhanden ist, egal ob es so ist oder nicht :(

Zeig uns doch mal deine Konstanten (Apfelrotkohl, Currywurst...etc.).

Denn wenn ich das mal schnell runtertippe und die einzelnen Rezepte als Strings anstatt String-Konstanten schreibe, dann geht's:

hoika 28. Nov 2017 15:08

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Hallo,
und dann bitte noch 2 Stellen optimieren

alt:
For s:=1 to 25 do
If Pos (Uppercase(Gesucht),UpperCase(Rezept[s]))<> 0 Then

neu:
For s:=Low(Rezept) to High(Rezept) do
If AnsiUpperPos(Gesucht,Rezept[s])<> 0 Then

Dann musst du bei einem neuen Rezept die 25 nicht jedesmal ändern.

Und Zählvariablen heissen immer i
(Das war ein Scherz ;) )

Delphi.Narium 28. Nov 2017 15:12

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Delphi-Quellcode:
var
  Rezept  : array[1..25] of string;
  i       : Integer;
  Gesucht : String;
  Gefunden : Boolean;
begin
  Gesucht := UpperCase(Edit1.text);
  ...
  i := Low(Rezept);
  repeat
    Gefunden := Pos(Gesucht,UpperCase(Rezept[i])) <> 0;
    Inc(i);
  until Gefunden or (i > High(Rezept));
  Label9.Caption:= Format('Das Rezept ist %sin der Rezeptsammlung vorhanden!',[IfThen(Gefunden,'','nicht ')]);
end;
Die Variante aus http://www.delphipraxis.net/1387370-post19.html liefert bei mir korrekte Ergebnisse, wenn ich (ebenso wie TiGü) aus den Konstanten Zeichenfolgen mache.

Lisaaaa 28. Nov 2017 15:17

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
String exceeds line wird mir angezeigt

Delphi.Narium 28. Nov 2017 15:18

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

Zacherl 28. Nov 2017 15:21

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

Zitat von Lisaaaa (Beitrag 1387384)
String exceeds line wird mir angezeigt

Dann hast du vermutlich irgendwo ein
Code:
'
vergessen oder zu viel.

Lisaaaa 28. Nov 2017 15:25

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
Var 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';
i := Low(Rezept);
     repeat
       Gefunden := Pos(Gesucht,UpperCase(Rezept[i])) <> 0;
       Inc(i);
     until Gefunden or (i >= High(Rezept));
     Label9.Caption:= Format('Das Rezept ist %sin der Rezeptsammlung vorhanden!',[IfThen(Gefunden,'','nicht ')]);
So habe ich es eigegeben, es funktioniert nicht. :/ Bin leider in Info nicht allzu begabt :D
Hoffe das es bald geht, ihr eine Lösung meines Problems findet

Delphi.Narium 28. Nov 2017 15:27

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Da fehlt am Ende das '

Delphi-Quellcode:
Rezept[1]:='Apfelrotkohl;

TiGü 28. Nov 2017 15:28

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

Zitat von Lisaaaa (Beitrag 1387388)
So habe ich es eigegeben, es funktioniert nicht. :/ Bin leider in Info nicht allzu begabt :D
Hoffe das es bald geht, ihr eine Lösung meines Problems findet

Zähle mal die '
Wenn die Zahl ungerade ist, dann fehlt dir eins.

Tipp: Das fehlende ' ist in den ersten 10 Zeilen deiner Methode zu suchen!

matashen 28. Nov 2017 15:28

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

damit ich auch meinen Senf dazu gebe - ungetestet
denn das mit dem Array ist Käse, geht alles wesentlich eleganter und einfacher, vor allem wenn du etwas erweitern willst
Delphi-Quellcode:
//Stringliste definieren
var meineRezepte: TStringlist;

//.. Instanz erzeugen im OnCreate
meinerezepte:=TStringlist.create;

//.. Etwas hinzufügen
meineRezepte.add('Lieblingsessen');

//.. Suchen
if meineRezepte.indexof('Lieblingsessen')<>-1 then vorhanden

//..Läßt sich statt Edit auch mit Combobox und Autovervollständigung nutzen
//.. Die Strings bekommst du dann rein mit
Combobox1.items.addstrings(meineRezepte);

//.. und wenn du das abspeichern willst
meineRezepte.Savetofile('Zieldatei');

//..zum Beispiel über einen Dialog
if savedialog1.execute then meineRezepte.Savetofile(savedialog1.filename);


// Du kannst genauso durch deine Stringliste mit einer Forschleife und Pos wenn du das willst und musst dich auch um die Anzahl der Gerichte nicht kümmern
gefunden:=false;
for i:=0 to meineRezepte.count-1 do if pos('eingabe',meineRezepte[i])>0 then gefunden:=true;

Lisaaaa 28. Nov 2017 15:28

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Es sagt nun, das 'Rezept'nicht gefunden wird

LTE5 28. Nov 2017 15:29

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

Zitat von Delphi.Narium (Beitrag 1387389)
Da fehlt am Ende das '

Delphi-Quellcode:
Rezept[1]:='Apfelrotkohl;

Solche Nachrichten gehen leider vollkommen unter, da immer mehr unnötige Sachen gepostet werden.

Lisaaaa 28. Nov 2017 15:31

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Die Variable 'rezept' wird nicht gefunden. Warum ??

LTE5 28. Nov 2017 15:32

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Weil du sie nicht mehr deklariert hast.
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
Var i : Integer;
Gesucht : String;
Gefunden : Boolean;
begin
So sah es vorher aus.
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
Var Rezept:array[1..25] of string;
s:Integer;
Gesucht:String;
begin
nichts für ungut. Aber Grundwissen bezüglich Variablen-Deklaration sollte eigentlich vorhanden sein.

Lisaaaa 28. Nov 2017 15:37

AW: Frage zu Rezeptsammlung-> Suchfunktion durch Array funktioniert nicht
 
Ich habe noch nicht sehr lang Informatik Unterricht, aber ja.
,[IfThen(Gefunden,'','nicht ')]);end; -> so steht es in Meinem Programm ...aber es fehlt ja was bei dem Teil, was muss ich da eig rein schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 Uhr.
Seite 1 von 2  1 2      

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