/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Select case [VB6]
Fra : Jens Vestergaard


Dato : 23-07-02 10:18

Hejsa

Det er sikkert langt ude, men man ved sq aldrig - der findes jo så meget:

Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet godt, der
er i stand til pr. automatik at alfabetisere/sortere en Select Case-række

select case
case "abe"
...
...
case "zebra"
end select

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



 
 
Tomas Christiansen (23-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 23-07-02 15:14

Jens Vestergaard skrev:
> Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet
godt, der
> er i stand til pr. automatik at alfabetisere/sortere en Select
Case-række
>
> select case
> case "abe"
> ...
> ...
> case "zebra"
> end select

Hvis det er på den simple form, som du her angiver, er det vel ikke så
svært at skrive et lille program selv!

-------
Tomas


Jens Vestergaard (23-07-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 23-07-02 16:39

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ahjoas$2sts$1@news.cybercity.dk...
> Jens Vestergaard skrev:
> > Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet
> godt, der
> > er i stand til pr. automatik at alfabetisere/sortere en Select
> Case-række
>
> Hvis det er på den simple form, som du her angiver, er det vel ikke så
> svært at skrive et lille program selv!

Jeg må indrømme, at jeg er på Herrens mark m.h.t. at skrive noget, der skal
fungere *inde* i VBs IDE...

Jeg må nok hellere ty til lidt disciplin og alfabetisere manuelt fra starten


--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen


>
> -------
> Tomas
>



Helge Bjørkhaug (23-07-2002)
Kommentar
Fra : Helge Bjørkhaug


Dato : 23-07-02 20:39

On Tue, 23 Jul 2002 17:39:16 +0200, "Jens Vestergaard" <j@railsoft.dk>
wrote:

>"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
>news:ahjoas$2sts$1@news.cybercity.dk...
>> Jens Vestergaard skrev:
>> > Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet
>> godt, der
>> > er i stand til pr. automatik at alfabetisere/sortere en Select
>> Case-række
>>
>> Hvis det er på den simple form, som du her angiver, er det vel ikke så
>> svært at skrive et lille program selv!
>
>Jeg må indrømme, at jeg er på Herrens mark m.h.t. at skrive noget, der skal
>fungere *inde* i VBs IDE...
>
>Jeg må nok hellere ty til lidt disciplin og alfabetisere manuelt fra starten

Stikkord = Clipboard
* marker tekst
* Copy i VB
* Ditt "lille" hjelpeprogram henter tekst fra Clipboard,
den sorterer Case-staements, sortert tekst tilbake til Clipboard
* Paste i VB (med "gammel" tekst fortsatt selektert)

Finnes sikkert en mer elegant måte å løse det på, men det er en start...

--
Snutten
Fjern helge og .invalid fra mailadressen før du svarer via mail.

Jens Vestergaard (23-07-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 23-07-02 20:45

"Helge Bjørkhaug" <helgesnutt@techie.online.no.invalid> skrev i en
meddelelse news:okbrjugd76c8l1p8ie991spu35q7np77no@4ax.com...
> On Tue, 23 Jul 2002 17:39:16 +0200, "Jens Vestergaard" <j@railsoft.dk>
> wrote:
>
> >> Jens Vestergaard skrev:
> >> > Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet
> >> godt, der
> >> > er i stand til pr. automatik at alfabetisere/sortere en Select
> >> Case-række

> Stikkord = Clipboard
> * marker tekst
> * Copy i VB
> * Ditt "lille" hjelpeprogram henter tekst fra Clipboard,
> den sorterer Case-staements, sortert tekst tilbake til Clipboard
> * Paste i VB (med "gammel" tekst fortsatt selektert)

> Finnes sikkert en mer elegant måte å løse det på, men det er en start...


Jae, og vel ikke så tosset... Lidt kreativ tænkning er godt. Tak for
ideen.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (23-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 23-07-02 22:27

Jens Vestergaard skrev:
> > Stikkord = Clipboard
> > * marker tekst
> > * Copy i VB
> > * Ditt "lille" hjelpeprogram henter tekst fra Clipboard,
> > den sorterer Case-staements, sortert tekst tilbake til Clipboard
> > * Paste i VB (med "gammel" tekst fortsatt selektert)
....
> Jae, og vel ikke så tosset... Lidt kreativ tænkning er godt. Tak
for ideen.

Hvis du ikke vil rode med clip-boardet med det samme, så start med at
lave et program med en textbox, hvor du kan paste din select ind i.

Du kan så vælge at opdatere samme textbox med resultatet, eller du kan
have en liggende ved siden af med resultatet, så man let kan
sammenligne. Det kan måske være lettere i programmeringsfasen.

-------
Tomas


Helge Bjørkhaug (24-07-2002)
Kommentar
Fra : Helge Bjørkhaug


Dato : 24-07-02 06:16

On Tue, 23 Jul 2002 23:27:02 +0200, "Tomas Christiansen"
<toc@blikroer.removethis.dk> wrote:

>Jens Vestergaard skrev:
>> > Stikkord = Clipboard
>> > * marker tekst
>> > * Copy i VB
>> > * Ditt "lille" hjelpeprogram henter tekst fra Clipboard,
>> > den sorterer Case-staements, sortert tekst tilbake til Clipboard
>> > * Paste i VB (med "gammel" tekst fortsatt selektert)
>...
>> Jae, og vel ikke så tosset... Lidt kreativ tænkning er godt. Tak
>for ideen.
>
>Hvis du ikke vil rode med clip-boardet med det samme, så start med at
>lave et program med en textbox, hvor du kan paste din select ind i.
>
>Du kan så vælge at opdatere samme textbox med resultatet, eller du kan
>have en liggende ved siden af med resultatet, så man let kan
>sammenligne. Det kan måske være lettere i programmeringsfasen.

God ide. Og array's er en fin ting

--
Snutten
Fjern helge og .invalid fra mailadressen før du svarer via mail.

Jens Vestergaard (24-07-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 24-07-02 07:50

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ahkhlo$15ik$1@news.cybercity.dk...
> Hvis du ikke vil rode med clip-boardet med det samme, så start med at
> lave et program med en textbox, hvor du kan paste din select ind i.
>

Njae, nu har jeg 'rodet' med clipboard (og meget andet godt) siden VB2, så
den del går nu nok..

Spørgsmålet er nok snarere, om det kan svare sig tidsmæssigt at lave et
hjælpe-program til sorteringen i forhold til at gøre det manuelt. Der skal
jo bl.a. ikke bare sorteres på 'linier', men på hele blokke af stærkt
varierende linie-antal.

Men det er da hyggeligt, at der rent faktisk er flere, der går ind på
tankegangen.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Helge Bjørkhaug (24-07-2002)
Kommentar
Fra : Helge Bjørkhaug


Dato : 24-07-02 07:55

On Wed, 24 Jul 2002 08:49:55 +0200, Jens Vestergaard wrote:

> "Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
> news:ahkhlo$15ik$1@news.cybercity.dk...
>> Hvis du ikke vil rode med clip-boardet med det samme, så start med at
>> lave et program med en textbox, hvor du kan paste din select ind i.
>>
>>
> Njae, nu har jeg 'rodet' med clipboard (og meget andet godt) siden VB2,
> så den del går nu nok..
>
> Spørgsmålet er nok snarere, om det kan svare sig tidsmæssigt at lave et
> hjælpe-program til sorteringen i forhold til at gøre det manuelt. Der
> skal jo bl.a. ikke bare sorteres på 'linier', men på hele blokke af
> stærkt varierende linie-antal.
>
> Men det er da hyggeligt, at der rent faktisk er flere, der går ind på
> tankegangen.

Jeg har en ide i mitt lille hode om hvordan man enklest kan trekke ut
blokker fra teksten. Det er kjente uttrykk som avgrenser blokkene, og
array's er en fin ting......

--
Snutten
Fjern helge og .invalid før du svarer via mail.

Tomas Christiansen (24-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 24-07-02 22:25

Jens Vestergaard skrev:
> Spørgsmålet er nok snarere, om det kan svare sig tidsmæssigt at lave
et
> hjælpe-program til sorteringen i forhold til at gøre det manuelt.
Der skal
> jo bl.a. ikke bare sorteres på 'linier', men på hele blokke af
stærkt
> varierende linie-antal.

Om det kan svare sig?

Hvis du kun skal bruge programmet én gang, skal det godt nok være en
stor case-sætning, for at det kan betale sig at lave et program til
det.

Jeg vil gætte på at det tager mig ca. 1 time at lave et program, som
kan sortere en case-sætning (hvis det skal have et pænt "finish" og
selv kommunikere med clipboardet osv., vil der sikkert gå flere
timer).

Jeg kan formentlig sortere 1 case for hver 6 sekunder.

Hvis det er en engangsfortéelse, skal case-sætningen bestå af mindst
600 cases før det kan betale sig at lave et program.

-------
Tomas


Tomas Christiansen (24-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 24-07-02 23:12

Tomas Christiansen skrev:
> Jeg vil gætte på at det tager mig ca. 1 time at lave et program, som
> kan sortere en case-sætning

Ja, jeg kunne ikke dy mig, men måtte lige prøve.

Dette lille program forventer at finde INDHOLDET af case-sætningen
(dvs. UDEN Select Case og End Select linierne) i textbox'en txtInd og
skriver resultatet i txtUd. Det tog præcis 40 minutter at lave.

Private Sub Form_Load()
Dim oAlleCases As Collection
Dim oEtCase As Collection
Dim sTekst As String
Dim sLinie As String
Dim sNøgle As String
Dim lCasePos As Long
Dim lKommentarPos As Long
Dim lLinieNr As Long

sTekst = txtInd.Text
Set oAlleCases = New Collection
Set oEtCase = New Collection

Do While Len(sTekst) > 0
sLinie = HentLinie(sTekst)
lCasePos = InStr(1, " " & sLinie, " Case ")
lKommentarPos = InStr(sLinie, "'")
If lCasePos > 0 And (lKommentarPos = 0 Or _
(lKommentarPos > 0 And lCasePos < lKommentarPos)) Then
If oEtCase.Count > 0 Then
IndsætCase oAlleCases, oEtCase
Set oEtCase = New Collection
End If
sNøgle = Mid(sLinie, lCasePos + 5)
oEtCase.Add sNøgle
Debug.Print sNøgle
End If
oEtCase.Add sLinie
Loop

For Each oEtCase In oAlleCases
For lLinieNr = 2 To oEtCase.Count
txtUd.Text = txtUd.Text & oEtCase(lLinieNr) & vbNewLine
Next
Next
End Sub

Function HentLinie(ByRef sTekst As String) As String
Const sLinieSlut As String = vbNewLine
Dim lLinieSlutPos As Long

lLinieSlutPos = InStr(sTekst, sLinieSlut)
If lLinieSlutPos > 0 Then
HentLinie = Left(sTekst, lLinieSlutPos - 1)
sTekst = Mid(sTekst, lLinieSlutPos + Len(sLinieSlut))
Else
HentLinie = sTekst
sTekst = ""
End If
End Function

Sub IndsætCase(ByRef oAlleCases As Collection, ByRef oEtCase As
Collection)
Dim oCheckCase As Collection
For Each oCheckCase In oAlleCases
If StrComp(oEtCase(1), oCheckCase(1), vbTextCompare) = -1 Then
oAlleCases.Add oEtCase, oEtCase(1), oCheckCase(1)
Exit Sub
End If
Next
oAlleCases.Add oEtCase, oEtCase(1)
End Sub

-------
Tomas


Jens Vestergaard (25-07-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 25-07-02 08:29

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ahn8oj$1oc6$1@news.cybercity.dk...
> Ja, jeg kunne ikke dy mig, men måtte lige prøve.

Jamen, er det ikke fremragende!
Så mangler vi bare at få det lavet som en add-in i VBs IDE, så den *løbende*
sorterer, når der skrives nye Cases ind... - det var egentlig der, vi (jeg)
begyndte. Men ellers er det da fedt, Tomas.

Det ser i øvrigt ud til, at det kikser lidt, hvis der er en nestet Select
Case i en af de ydre cases:
....
Case 2
Select Case "noget andet"
Case "ole"
...
...
End Select
Case 3
....
Men det er jo en detalje, som kan rettes.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (25-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 25-07-02 17:21

Jens Vestergaard skrev:
> Det ser i øvrigt ud til, at det kikser lidt, hvis der er en nestet
Select
> Case i en af de ydre cases:

Det er rigtigt.
Som du sikkert kan se ud af koden, har jeg taget højde for hvis en
case er kommenteret ud, men jeg har ikke taget højde for "nestede"
kommentarer, f.eks:

Case "abc"
'Case "kommentar"" _
Case "dette er OGSÅ en kommentar"
Case "dette er IKKE en kommentar"

Desuden bør genkendelsen af strengen efter ordet "Case" ske ved at man
leder efter de to tilhørende anførselstegn, og at man ignorerer
dobbelt-anførselstegn.

Ud over det, bør man tage stilling til hvad man skal gøre, hvis der
ikke findes en streng, men evt. numerisk udtryk, flere strenge (med
komma imellem) eller udtryk på formen Is > "noget".

Der er sikkert også andre ting, som der bør checkes for.

-------
Tomas


Jens Vestergaard (25-07-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 25-07-02 17:52

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ahp8gr$sm9$1@news.cybercity.dk...
>
> Der er sikkert også andre ting, som der bør checkes for.

Nå ja... vis mig en kode, hvor det IKKE er tilfældet..

Men som sagt: udmærket lille ting. Kørte den på en blok med 60 Cases uden
problemer.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (26-07-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 26-07-02 21:51

Jens Vestergaard skrev:
> Men som sagt: udmærket lille ting. Kørte den på en blok med 60 Cases
uden
> problemer.

Lagde du forresten mærke til den måde, hvor jeg bruger en collection
til at sortere i/med?

Det gik nemlig lige pludselig op for mig, at man, når man angiver
_hvor_ en ny værdi skal sættes ind, ikke kun kan angive et heltal som
position, men kan angive en eksisterende _nøgle_-værdi, som det nye
skal indsættes før eller efter. Problemet er blot at man ikke, i en
collection, kan udtrække nøgle-værdierne, men er nødt til at gemme den
selv - sammen med sine data... og det gøres jo lettest i en _ny_
collection.

Man mangler blot at en collection selv kunne sørge for at holde sig
sorteret, men det er jo lige det, som man kan forvente med
MS-produkter: Man mangler altid lige DET, som "alle" en dag står og
har brug for... suk...

-------
Tomas


Bjarne Østergård (30-07-2002)
Kommentar
Fra : Bjarne Østergård


Dato : 30-07-02 00:12


"Jens Vestergaard" <j@railsoft.dk> wrote in message
news:3d3d1f48$0$13932$edfadb0f@dspool01.news.tele.dk...
> Hejsa
>
> Det er sikkert langt ude, men man ved sq aldrig - der findes jo så meget:
>
> Er nogen stødt på en kontrol, en kode-snip, en add-in eller andet godt,
der
> er i stand til pr. automatik at alfabetisere/sortere en Select Case-række

Jeg løste engang et lignende problem ved at bruge en liste som buffer og
sætte dens propperties
Sorted = True

Så sorterer den fint alle strenge alfabetiske og de er lige til at læse
igen.
Eneste ulempe er hvis du har tal, de sorteres i en mærkelig rækkefølge i en
listboks ved alfabet sortering.

Du kan også bruge en database til sortering hvis du har store mængder af
data.

Man kan lave meget avancerede sorteringer med databaser og vb.

MVH
Bjarne Østergård











Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408524
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste