Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Suchfunktion für Seriennummern???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.02.2004, 17:29 Uhr
~ARMI
Gast


Hallo Leute,

Habe einen Hilferuf an euch ausgesendet bitte hilft mir!!!

Ich möchte eine Suchfunktion von Seriennummern programmieren. Dabei sollte es möglich sein, dass die Seriennummer auch Asci Zeichen enthält. Die Suche sollte Nummerisch funktionieren und nicht Zeichen weise Vorgehen.

Beispiele:

Achsverstärker@6532646786
Gerät @ Seriennummer.

Das Gerät wird ausgeschlossen da erst nach dem @ gesucht werden soll.

Eine Liste der Seriennummern wäre.

Seriennummer: 1
Seriennummer: 2
Seriennummer: 3
Seriennummer: 4 NICHT IM BEREICH
Seriennummer: 5 AUSGABE VON
Seriennummer: 6
Seriennummer: 7
Seriennummer: 8
Seriennummer: 9
Seriennummer:10
Seriennummer:11
Seriennummer:12
Seriennummer:13 IM BEREICH
Seriennummer:26
Seriennummer: 1A
Seriennummer: 2A
Seriennummer: 1B
Seriennummer: 2B
Seriennummer: 3B
Seriennummer: A1
Seriennummer: A5
Seriennummer: A10
Seriennummer: B1
Seriennummer: B5
Seriennummer: B10
Seriennummer: C1
Seriennummer: C15
Seriennummer: C49
Seriennummer: CC2 AUSGABE BIS
Seriennummer: CC43 NICHT IM BEREICH

Die Funktion sollte so suchen.

Alle Seriennummern im Bereich VON, BIS sollen gefunden werden.
VON = 5 , BIS = CC2

1.)
Also zuerst alle Seriennummern Von Seriennummer 5 - 26. (Nummerisch steigend).
Seriennummern die gefunden wurden sollen in eine ListeBox oder
in einem AnsiString Feld LISTE[] einfügt werden.
Diese Teilfunktion hat die wichtigste Priorität, weil die meisten Seriennummern nur aus Zahlen bestehen.


2.)
Alle Seriennummern mit Zahlen und Buchstaben, Seriennummer 9 - 3B (steigend, lexikalisch).
Wobei 5 - 26 nummerisch steigend sein soll, Fall 1 schon durchsucht wurde, wenn aber die Seriennummer schon mal vor kam sollte diese ausscheiden.
Seriennummern die danach kommen sollen in der ListeBox einfügt werden.

3.)
Alle Seriennummern mit Buchstaben und Zahlen Von Seriennummer (Steigend, Alphabetisch).
Wobei Fall 1 und 2 schon durchsucht wurde, wenn aber die Seriennummer schon mal vorkam sollte diese ausscheiden.
Seriennummern die danach kommen sollen in der ListBox einfügt werden.

Meine Bisherigen Ergebnisse sind für mich nicht befriedigend.
Beispiel das ich bis jetzt verwendet habe:

Also BITTE BITTE BITTE HIIIIIIILLLLLLLLFFFFFEEEEEEE!!!!!

C++:
   BereichV = strcmp(IST,VON);
    BereichB = strcmp(IST,BIS);

    // Wenn die Seriennummer die gleiche ist die in "Von" angegeben wurde
    if ( (BereichV == 0) )
      {
      Form3->ListBox1->Items->Add(IST);
      }
    // Wenn die Seriennummer groesser ist als in "Von",
    // und im Bereich liegt der in "Von <->Bis" angegeben wurde
                        // UND
    // Wenn die Seriennummer kleiner ist als in "Bis",
    // und im Bereich liegt der in "Von <-> Bis" angegeben wurde
    if ( ( BereichV > 0) & ( BereichB < 0 ) )
      {
      Form3->ListBox1->Items->Add(IST);
      }
    // Wenn die Seriennummer die gleiche ist die in "Bis" angegeben wurde
    if(BereichB == 0)
      {
      Form3->ListBox1->Items->Add(IST);
      }



Wäre toll es würde mir jemand helfen können.

Danke!!!


Bearbeitung von loddab:
cpp-Tags gesetzt

Mfg ARMI.

Sind wir nicht alle ein bischen ...

Dieser Post wurde am 10.02.2004 um 10:33 Uhr von loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.02.2004, 09:17 Uhr
ARM-Tec



Hallo Leute ist ja echt verdächtig dass sich niemand meldet ist es zu komplex oder ist es zu einfach ???

Bitte um Hilfe bei die ser Sache

Bis dann....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.02.2004, 10:06 Uhr
(un)wissender
Niveauwart


Mir ist nicht ganz klar, wo das Problem liegt bzw. was zu tun ist.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.02.2004, 13:11 Uhr
ARM-Tec



Sorry muß übrigens noch erwähnen dass ARMI und ARM-Tec die gleiche Person sind !!!

Hallo,

Also gut, ist vieleicht schlecht oder schwer beschrieben. Die ganze Sache ist aber auch nicht einfach denke ich.

1) Suche nach Seriennummern (Zahlen) mit unbegrenzter Anzahl der Zeichen
Beispiel: 5 ist kleiner als 15

2) Suche nach Seriennummern (Zahlen+Buchstaben) mit unbegrenzter
Anzahl der Zeichen. Beispiel: 1A ist kleiner als 1B

3) Suche nach Seriennummern (Buchstaben) mit unbegrenzter Anzahl der
Zeichen. Beispiel: AB ist keliner als AC oder als BA

ich denke jetzt wird es mit der oben beschriebenen Aufgabe klarer.

In dem Code ist das Problem das nur jedes Zeichen verglichen wird und damit bei einem Suchbereich von 5 bis 25, die in dem Bereich liegenden Zahlen (also 6,7,8,....21,22, 23,24) nicht gefunden werden. Das Suchergebnis ist dann nur 5 u. 25 weil es eben gleich der Eingabe von "VON" und "BIS" ist.

Gut denke jetzt müsste es klar sein.

Bin im voraus schon dankbar um jede Idee und Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.02.2004, 14:00 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Wenn du von bis mit Variablen deklariert hast. Dann benutz doch einfach ne schleife!


C++:
for(int i=von; i<=bis;i++)
   {
    und nun vergleichst du i mit weis ich was;
   }


--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.02.2004, 16:09 Uhr
(un)wissender
Niveauwart


Versteht ich dich richtig, alle Seriennummern, ob nun Zalhen oder Buchstaben, liegen als char-Array vor ja?
Wenn ja dann kannst einfach die STL nutzen mit find und/oder lexicographical_compare.
Sind die unterschiedlich zusammengesetzten Serienummer alls in einem Feld, oder nach Zusammensetzung getrennt?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.02.2004, 14:45 Uhr
ARM-Tec



Hallo (un)wissender,

nein, die Snr. sind nicht in einem Array sondern in einer Datei gespeichert die ich mit "getline" zeilenweise auslese, vergleiche und wenn sie in dem Bereich sind einer ListBox zuweise (add). Der obere teil des Code ist in der While-Schleife die bis EOF einliest. In dieser Datei lege ich alle anfgelegten Seriennummern ab die jemals eingegeben wurden. Nun soll eben dann erst nummeralisch und dann lexikalisch verglichen werden, wie oben beschrieben.

Frage: "STL" ist das nicht das gleiche wie "strcmp" ?

Wenn nicht kast dumir mal zwei drei Zeile Coden damit ich weiß wie es geht? Wäre echt toll.

Hallo Puschel danke für deine Hilfe aber wenn es mit ner Forschleife zulösen gewesen wäre, würde ich nicht den Aufwand berteiben. Sorry vieleicht das nächstemal. Trotzdem Danke!!! Eine Seriennummer ist unter Umständen 20 oder 25 Zeichen lang wenn ich da ne Zahl von bis suche Brauche ich einen Zahlen Typ der das mit macht (Überlauf ??? !!! ).


Vorschlag von mir: Die Zeichen in dem Editfeldern welche den "VON" "BIS" Wert entsprechen, Rechtsbündig setzen und linke seite bis z.B. zur 30. Zeichen mit Leehzeichen füllen ( Puschel mit for oder While ) und dann erst vergleichen. Vieleicht liegt es daran???


Also Leute wer hat Rat für mich oder auch Tat???

Danke für jeden Tipp im Voraus schon.


MfG ARM-Tec
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: