Hi, ich schreibe zur zeit ein Programm für Sozialversichrungsnummern(svn). In meinem Programm sollte man neue svn hinzufügen können, alle vorhandenen svn anzeigen lassen können und nach einer bestimmten suchen können. Leider packe ich das mit dem suchen nicht ganz. Wenn die gesuchte svn vorhanden ist, sollte svn vorhanden ausgegeben werden. Habe es mit IndexOf probiert. Mein versuch könnt ihr euch anschauen. Danke und lg.
Lorenz S. schrieb: > Leider packe ich das mit dem suchen nicht ganz. > Wenn die gesuchte svn vorhanden ist, sollte svn vorhanden ausgegeben > werden. > Habe es mit IndexOf probiert. Und den trivialen Ansatz willst du nicht? Einfach mal über alle Nummern laufen und mit der Gesuchten vergleichen? Wenn deine Datenbank o.ä. keine speziellen Eigenschaften hat, bleibt sowieso keine andere Möglichkeit.
:
Bearbeitet durch User
Beitrag #7031144 wurde von einem Moderator gelöscht.
Moin, -
an diesem Beispiel kann man schoen sehen, dass Ascii immer noch #1 fuer
Programme ist:
> private static string[] svnHinzufügen(string neuessvn, string[] svn)
Gruesse
Th.
Beitrag #7031162 wurde vom Autor gelöscht.
>> private static string[] svnHinzufügen(string neuessvn, string[] svn) Thomas W. schrieb: > an diesem Beispiel kann man schoen sehen, dass Ascii immer noch #1 fuer > Programme ist Sorry, aber das ist eindeutig utf-8, nur falsch dargestellt.
https://docs.microsoft.com/de-de/dotnet/api/system.collections.generic.list-1?view=net-6.0 merciless
Ich wollte dir nicht die Lernkurve wegnehmen. Lies die Doku zur List<T> und überlege, wie du das in deinem Programm einsetzen kannst. Hilfreich könnten die Methoden
1 | public void Add (T item); |
2 | public bool Exists (Predicate<T> match); |
sein. merciless
Aber mit indexOf geht es nicht? Bzw. Was hab ich falsch gemacht
merciless schrieb: > Aber mit indexOf geht es nicht? Irgendwas machst du wohl falsch, schätze ich. Ich habe noch nie in C# programmiert, aber ich vertraue darauf, dass das Beispiel in der Doku nicht gelogen ist: https://docs.microsoft.com/de-de/dotnet/api/system.collections.generic.list-1.indexof?view=net-6.0 Demnach geht es. Du musst nur die List Klasse benutzen, anstelle des Arrays. Wenn du unbedingt beim "dummen" Array bleiben willst oder musst, dann musst du halt "zu Fuß" darin suchen.
Das kann man austesten. Haltepunkt für doppelte svn mit if()... einbauen und dann schauen was bei Indexof konkret nicht passt.
Sicher ist sicher schrieb im Beitrag #7031144:
> Achung, die DSGVO beachten
Was hat die denn damit zu tun. Berechtigte Mitarbeiter werden auch mit
der DSGVO Zugriff auf die Personaldaten haben. Und der Rest hat nicht
mal ein Passwort für den Zugang zur Software.
@TO
Wieso machst du das so kompliziert.
Mach nach jeden Tastendruck beginnend mit den 3 eine Datenbank anfrage
mit like. oder aber frage nach der Eingabe die Datenbank ab.
Da du die Daten eh speicherst ist das die einfachste Lösung.
Und wenn du ein Listview mit Eingabe verwendest kannst du ja (wie das
allgemein üblich ist) die gefundenen Werte anzeigen. Wenn du das
Listview verlässt, dann kommt ne Meldung und der Datensatz wird
angezeigt auf Wunsch.
Das ist erweitertes Coden für Anfänger.
int i = svn.Indexof(gessvn); if (i > 0) Probier mal: if (i > -1)
Sage mal, steigt bei > svn.Indexof(gessvn) nicht der Compiler aus? Arrays haben doch gar keine Methoden! Aber ich habe gerade gesehen, dass eine Hilfsklasse gibt, mit der man das ohne die List Klasse machen kann: https://docs.microsoft.com/de-de/dotnet/api/system.array.indexof?view=net-6.0 Und grundschüler hat völlig Recht, die Zählung fängt bei 0 an. Du bekommst eine 0 zurück, wenn der String ganz am Anfang gefunden wurde. -1 bedeutet "nicht gefunden". > Probier mal: > if (i > -1)
Dumme Frage. Wieso legt man Sozialversicherungs-Nummern in ein Array. Das ist doch der klassische Fall für eine Datenbankabfrage. Arrays werde doch eh gelöscht wenn das Prg. geändert wird. Und ab ein gewissen Punkt ist eh der Speicher voll. Irgendwas passt da nicht zusammen. !?!?!?!
Schlaumaier schrieb: > Wieso legt man Sozialversicherungs-Nummern in ein Array? Das ist doch nur eine Übungsaufgabe!
Schlaumaier schrieb: > Aber eine doofe. Das ist noch harmlos. Ich musste fast ein ganzes Schuljahr lang Strichzeichnungen mit einer virtuellen Schildkröte malen, die einen Stift hinter sich her zieht. Aber nicht mit Schleifen und Algorithmen, sondern schier endlosen Listen von Kommandos im Batch-Stil (es war aber Turbo Pascal). Als ich damit anfing, Schleifen und Algorithmen zu programmieren, wurde ich aus dem Kurs geworfen und bekam eine 5 auf dem Zeugnis. Guck die das mal an: Beitrag "Spannungsabfall Widerstand berechnet" Der Kollege tut mir leid.
Stefan ⛄ F. schrieb: > Du musst nur die List Klasse benutzen, anstelle des Arrays. Wenn du > unbedingt beim "dummen" Array bleiben willst oder musst, dann musst du > halt "zu Fuß" darin suchen. Nein, muss er nicht. string[] erbt von System.Array und diese Klasse hat ein paar abstrakte Methoden, die man nutzen kann, u.a. auch IndexOf. Darüber hinaus hat so nochmal deutlich mehr generische Methoden, die man ebenfalls nutzen kann. Wenn man hart genug im Nehmen ist und sich mit dem ganzen syntaktischen Wahnsinn generischer Programmierung tatsächlich auseinandersetzen will... Also, es geht z.B.: System.Array.IndexOf(svn, gessvn); Das ist noch gut überschaubar.
Wenn man in C# programmiert sollte man auch versuchen, die C#-Philosophie anzunehmen. Ein array[] ist eher C-orientiert, in C# verwendet man - wie oben schon gesagt - eher Klassen aus dem System.Collections.Generic-Namespace, hier List. Die hat dann auch schon verschiedene Komfortfunktionen. Die Add-Funktion ist deutlich schneller als deine Array-Implementierung, weil die alten Daten nicht kopiert werden müssen. Zusätzlich allokiert List gleich Platz für mehrere Einträge. Ganz unabhängig davon ist es eine schlechte Idee, die Überschrift "Sozialversicherungsnummer" mit in die Liste aufzunehmen. Das führt dazu, dass du die Liste z.B. nicht mehr sortieren kannst. Besser wäre es, deiner Anzeigen-Funktion einen zusätzlichen Überschrift-Parameter hinzuzufügen.
Tilo R. schrieb: > Ganz unabhängig davon ist es eine schlechte Idee, die Überschrift > "Sozialversicherungsnummer" mit in die Liste aufzunehmen. Das auf jeden Fall. Das ist sowas von Excel...
1 | int i = Array.IndexOf(svn, gessvn); |
so klappt's. zu überprüfen auf: https://dotnetfiddle.net/vLbFbt
1 | if (i > 0) |
ist eigentlich falsch, aber da svn[] bereits mit einem Element initialisiert wurde, geht das.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.