AScan() mit Leerstring [ERLEDIGT]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Hi,

gerade ist mir etwas aufgefallen, was ich gar nicht glauben konnte. Was aber nicht heißen soll, das es nicht doch korrekt ist, ich aber den Sinn nicht verstehe.

Vorgabe ist Array, in dem gesucht wird. Suche ich über AScan() mit einem richtigen Wert, dann wird mir die Stelle zurückgegeben, an dem der Wert im Array steht. Suche ich mit einem ungültigen Wert, ergibt die Suche 0. Suche ich aber mit einem Leerstring, dann ergibt die Suche immer 1. Ist das korrekt so? Das ein Leersting möglich ist, liegt daran, dass eine Routine ein Array auf Ergebnisse durchsucht. Da kann es schonmal passieren, dass es Leerstrings gibt. Aber das dann eine 1 zurückgeliefert wird?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: AScan() mit Leerstring

Beitrag von Koverhage »

Ja wenn das Array danach sortiert ist ;-)
Gruß
Klaus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring

Beitrag von Manfred »

verstehe ich jetzt nicht.... :(
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring

Beitrag von Jan »

Zeig doch mal ein Musterarray. Ist das mehrdimensional? Und wie sieht der Suchbegriff aus? Und die Codezeile mit dem AScan()?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring

Beitrag von Manfred »

Code: Alles auswählen

testarray := {"1","2","3","4"}
Ascan(testarray,"2") = 2
AScan(testarray,"lkhf") = 0
AScan(testarray,"") = 1 
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Christian
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 44
Registriert: Mi, 18. Jul 2007 15:05

Re: AScan() mit Leerstring

Beitrag von Christian »

Hallo Manfred,

das könnte etwas mit folgendem Sachverhalt zu tun haben:

Code: Alles auswählen

      SET EXACT OFF 
      ? "A"  = ""             // Ergebnis: .T. 
Da das Ergebnis mit Leerstrings nicht immer vorrauszusehen ist, verwende ich lieber Empty():

Code: Alles auswählen

      n := AScan( aArray, {|x| Empty(x) } )
mfg
Christian
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: AScan() mit Leerstring

Beitrag von mini990 »

Trim verwenden.....
Suche nach "" ergibt 1
Suche nach " " ergibt 0

Gruß Stefan
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: AScan() mit Leerstring

Beitrag von Herbert »

Numerische Werte wären einfacher, lieber Manfred...

Was ergibt denn

Code: Alles auswählen

npos:= AScan(  testarray, {|x| x==""})
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring

Beitrag von Manfred »

Hi Herbert,

das ergibt dann 0 auf den ersten Blick des Tests.

OK, es gibt da wohl eine Umgehung, bzw. einen "Sonderstatus". Aber da muß man erstmal drauf kommen. In der Anleitung steht auch was mit Set EXACT. Wenn man das setzt, dann ergibt es auch 0. :roll:
Also Christians Vermutung war richtig. Manmanman
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Jan »

Manfred,

genau deswegen hatte ich gefragt, ob Du = oder == benutzt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Und ich verstehe nicht, wo Du es meinst? Ich mache Ascan() und erhalte einen Wert. Den Frage ich nur ab, ob er größer 0 ist. Wo soll ich = oder == einsetzen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Jan »

... im AScan() machst Du doch eine Abfrage auf irgendwelche Werte, oder? macht man jedenfalls normalerweise ;-)

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Schau doch einfach mal oben, wie ich es mache. Da ist nichts mit = oder ==.

Oder schreibe Deine AScan Variante auf, bevor wir hier wieder unendlich diskutieren
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Jan »

Richtig. Aber das wußte ich bei meiner Frage noch nicht. Wenn Du den AScan() gemacht hättest wie in Herberts Beispiel, dann gäbe es den Vergleich. Und da hättest Du den == einbauen können.

Der Punkt ist, das Du das auf Deinem Weg (der ja absolut korrekt ist) nur mit SET EXACT hinbekommst. Den Wert mußt Du vorher wegsichern, und hinterher wiederherstellen. Machst Du das im AScan() mit dem Codeblock, dann hast Du auch ein Exact, aber eben wirklich nur für diese Suche. Ich finde das angenehmer als sichern und wiederherstellen. Man kann das auch nicht vergessen (mit allen unerwarteten Konsequenzen), weil das ja unnötig ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Da hast Du vollkommen Recht. Ich merke das jetzt auch, dass das keine gute Lösung war von mir. Aber mit einem Leerstring suchen...? Wer kommt auf so eine bekloppte Idee? Naja, jetzt wissen wir es. :roll: Aber das ist nun mal das Problem von Routinen, die in der Theorie klappen, aber in der Praxis eben solche Dinge zeigen.

Naja, wieder was dazugelernt. :banghead:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

OK, aber in mehrdimensionalen Arrays scheint das so nicht zu klappen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Jan »

Was scheint da nicht zu klappen? Ich arbeite da ständig so.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Es gibt eine Fehlermeldung bei mir.
Parameter hat falschen Typ.
Und das obwohl ich mit einem Text einen Text suche.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Jan »

Manfred,

wenn Du mehrdimensional suchst, dann muß Du auch angeben, in welcher Spalte Du suchst. Läßt Du das weg, dann suchst Du nach dem gesamten Unterarray. Also z. B.

Code: Alles auswählen

nPosition := AScan(aArray, {|x| x[3] == "Banane"})
sucht nach der exakten Schreibweise "Banane" (Achtung: Auch keine Leerzeichen dahinter!) in der dritten Array-Spalte.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: AScan() mit Leerstring [ERLEDIGT]

Beitrag von Manfred »

Ja, jetzt ist es auch klar und es klappt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten