Brauche Hilfe bei einem C# Programm

#7031137
Lesenswert?

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.
Angehängte Dateien:
#7031139
Lesenswert?

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.
Beitrag #7031144 wurde von einem Moderator gelöscht.
Beitrag #7031162 wurde von einem Moderator gelöscht.
Gast #7031270
Lesenswert?

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.
Gast #7031297
Lesenswert?

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.
Gast #7031408
Lesenswert?

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)
Gast #7031415
Lesenswert?

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. !?!?!?!
Gast #7031433
Lesenswert?

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.
Gast #7031676
Lesenswert?

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.
Persönliche Seite #7031732
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren