Avatar billede hardsoft Nybegynder
11. oktober 2002 - 16:17 Der er 17 kommentarer

Fortløbne serienumre

Hey, skal have lavet et program der kan gemme en masse serienumre i en db... Istedet for manuelt at skullle skrive f.eks. Ae38bbu6, Ae38bbu7, Ae38bbu8, Ae38bbu9, Ae38bbv0, osv. skal man bare kunne skrive

Fra Ae38bbu6 til Ae38bbv0 og så finder den selv de mellemliggende...

Mange tak...
Avatar billede moses Praktikant
11. oktober 2002 - 20:07 #1
Først gennemløber du "fra" og "til" strengene fra venstre mod højre for at finde ud af, hvor de første gang er forskellige.
Alt til venstre for det punkt er så fast.
Resten deler du så op for hver plads - enten, som et tal eller, som et bogstav. Optælling starter fra højre. Hvis det er et bogstav tæller du fra det bogstavs ascii værdi til "z", hvis det er et tal ... ja så er det til 9.
Hver gang du runder toppen, tæller du næste plads ....

Der er dog nogle overvejelser, som du skal have med:

I dit eksempel vil du da tælle Ae38bbu6, Ae38bbu7, Ae38bbu8, Ae38bbu9, Ae38bbua ....
Eller skal den sidste hedde Ae38bbv0 ?!?!
Avatar billede martin_moth Mester
11. oktober 2002 - 20:18 #2
Dim Serienummer() as String 'Et array med dine serienumre
Dim i As Integer
Dim j As Integer

For j 0 to 2 'Dvs fra u til x
  For i = 0 to 9
      Serienummer(i+j*10) = Ae38bb & Chr(Asc(u)+j) & i
  Next i
Next j

Jeg har ikke VB på denne PC, så måske er der en lille detalje jeg har overset - jeg er dog 99% sikker på at det virker...
Avatar billede martin_moth Mester
11. oktober 2002 - 20:20 #3
NB Ovenstående forudsætter, at Ae38bb er en fast del af serienummeret.
Altså at syntaksen for serienummeret er Ae38bbXY, hvor X = u..x og Y = 0..9 - det kan du jo bare ændre på :o)
Avatar billede martin_moth Mester
19. oktober 2002 - 14:22 #4
hardsoft, er du stadig med???
Avatar billede hardsoft Nybegynder
23. oktober 2002 - 14:28 #5
Ja, men det virker ikke, den skal jo kunne køre længere end sidste ciffer... bogstaver skal forblive bogstaver og tal skal forblive tal...
Avatar billede martin_moth Mester
23. oktober 2002 - 14:31 #6
Ikke med - hvordan skal de serienumre laves (eksempel)?

Min løsning har syntaksen
Ae38bbXY, hvor X = u..x og Y = 0..9
Hvad ønsker du?
Avatar billede martin_moth Mester
23. oktober 2002 - 14:35 #7
Altså - for at skære det ud i pap - min løsning giver 30 serienumer:
Ae38bbu0, Ae38bbu1 , Ae38bbu2, Ae38bbu3, Ae38bbu4, Ae38bbu5, Ae38bbu6, Ae38bbu7, Ae38bbu8, Ae38bbu9, Ae38bbv0, Ae38bbv1 , Ae38bbv2, Ae38bbv3, Ae38bbv4, Ae38bbv5, Ae38bbv6, Ae38bbv7, Ae38bbv8, Ae38bbv9, Ae38bbx0, Ae38bbx1 , Ae38bbx2, Ae38bbx3, Ae38bbx4, Ae38bbx5, Ae38bbx6, Ae38bbx7, Ae38bbx8, Ae38bbx9 ... men hvad vil du have det skal give?
Avatar billede hardsoft Nybegynder
23. oktober 2002 - 15:01 #8
det skal være dymamisk, alt efter hvad det første serienummer er i rækken...
Avatar billede martin_moth Mester
23. oktober 2002 - 17:23 #9
Jamen det er da klaret i en ruf:

'Input (dynamisk):
  StartSerieNummer = Text1.text
  EndSerieNummer = Text2.text

'Generering af navne
  First6Chars = left(StartSerieNummer,6)
  StartChar = mid(StartSerieNummer,7,1)
  EndChar = mid(EndSerieNummer,7,1)
 
  if Asc(Lcase(StartChar)) > Asc(Lcase(EndChar)) then
    msxbox "Fejl i input - bogstav på plads 7 er i startpassword _
            ligger før bogstav på plads 7 i endpassword"
  end if

  For j = 0 to Asc(Lcase(EndChar)) - Asc(Lcase(StartChar))
    For i = 0 to 9
        Serienummer(i+j*10) = First4Chars & Chr(Asc(StartChar)+j) & i
    Next i
  Next j

:o)
Avatar billede hardsoft Nybegynder
22. november 2002 - 16:21 #10
Den kan ikke tælle over 10 ?
Avatar billede martin_moth Mester
24. november 2002 - 12:44 #11
Nu er det jo en måned (!) siden sidst - kan ikke huske alle detaljerne?

Så - min løsning giver de serienumre der er vist i mit svar 23/10-2002 14:35:44 - er det ikke det du ønsker, så forklar hvad du vil...
Avatar billede hardsoft Nybegynder
25. november 2002 - 14:57 #12
Om igen...
Det eneste den skal er at tælle bogstaver og tal... Hvis der står et tal på en plads, skal det forsat være et tal, ligeledes med bogstaver. Dvs. der ingen ombytning er med bogstaver og tal.

Den skal tælle så meget den kan, dog maks 1000 numre. Forstår i nu ?
Avatar billede martin_moth Mester
25. november 2002 - 15:06 #13
Jeg forstår stadig ikke
Dvs. serienummeret består af 8 karakterer (8 pladser) - altid?
Og der kan stå både bogstaver og tal på alle 8 pladser?
Hvilke pladser skal der tælles ved - de sidste 2, allesammen, hvilke?

Der er stadig 1000 måder dit spørgsmål kan opfattes på - jeg mente jeg havde givet et 100% rigtigt svar, men det er det åbenbart ikke i dine øjne. Så kom igen - hvad er den generelle syntaks for serienummeret, og hvordan skal du nye genereres?
Avatar billede hardsoft Nybegynder
25. november 2002 - 15:36 #14
ser er ingen fast længe på serienumrende, men maks 1000 (som en grænse)

serienumrende er meget forskællige. Vi tager et eks.

Start = VKL181TLB8GH45L
Slut = VKL181TLB8GH47M

Derimellem er der ca. 52 numre, som skal genereres... Men kodeordet er kompatilitet, den skal kunne tage alle serienumre, der er ingen faste pladser for tal eller bogstaver...
Avatar billede martin_moth Mester
25. november 2002 - 15:40 #15
Jeg gentager lige:

Min løsning har syntaksen
  ZZZZZZXY, hvor
  ZZZZZZ er konstante, ændres ikke!
  X = er et bogstav, der kan variere
  Y er et tal, der løber fra 0 til 9

Hvad ønsker du?

Dvs. indtaster du blablaG1 & blablaM1 får du følgende serienumre:

blablaXY, hvor
X = G, H, I, J, K, L, M,
Y = 1,2,3,4,5,6,7,8,9,0

Dvs i dette tilfælde 70 serienumre (7 x 10)

Dette er præcis(!) det du har vist i dit eksempel, og er dynamisk som du ønsker det, idet du selv indtaster blablaG1 og blablaM1, og der er ingen ombygning mellem tal og bogstaver. Koden der gør ovenstående finder du i mit svar 23/10-2002 17:23:27 (hvor der er en stavefejl - ret First4Chars til First6Chars ;o)
Avatar billede hardsoft Nybegynder
25. november 2002 - 15:55 #16
Problemet er stadig ZZZZ - faste/konstante pladser, som jeg kun har skrevet 3 gange der ikke måtte være!

Desuden giver du også X som tal, hvad nu hvis SerieStarten havde set sådan ud:
blabla11 - så du din kode jo ikke!
Avatar billede martin_moth Mester
25. november 2002 - 16:03 #17
Gider ikke mere - så meget tid spildt på et problem, som er så ringe forklaret :(

d. 11/10-2002 20:20:03 skrev jeg, at jeg forudsatte at de første 6 karakterer var konstante - og det har du ikke før nu brokket dig over, selvom du siger du har sagt det 3 gange - det må være et andet sted end her du har skrevet det 3 gange...)

Held og lykke

PS: der skal blot ganske ganske få ændringer i min kode, så har du det du ønsker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester