Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Mid

Postades av 2005-01-17 08:16:32 - Sven Jansson, i forum visual basic - allmänt, Tråden har 22 Kommentarer och lästs av 853 personer

Har hittat ett ex här på pellesoft, för att formatera telenr. Det fungerar så länge inte Stockholmsnr ska skrivas in, kanske jag är på fel spår men har inte förstått var jag missar.

'Skriv in riktnr tryck på mellanslag skriv in resten av nr.

Private Sub txtTelefon_LostFocus()
Dim TTemp, TTemp1, TTemp2, TTemp3, TTemp4, TTemp5, strTTemp, MyPos As String

' Vet ej om strTTemp ska vara String ?
'Dim strTTemp ' Ingen skillnad om jag bara Dim den?
'Kollar om tel.nr redan finns angivet
If Len(txtTelefon.Text) > 0 Then
MyPos = InStr(1, txtTelefon, "-")
If MyPos <> 0 Then
Exit Sub

Else
On Error Resume Next
TTemp = Telefon
TTemp = Split(TTemp, " ")
TTemp(0) = TTemp(0) & " - "
Error.Clear

If Len(TTemp(1)) = 5 Then
TTemp1 = Mid(TTemp(1), 1, 3)
TTemp2 = Mid(TTemp(1), 4, 2)
strTTemp = TTemp(0) & TTemp1 & " " & TTemp2

ElseIf Len(TTemp(1)) = 6 Then
TTemp1 = Mid(TTemp(1), 1, 2)
TTemp2 = Mid(TTemp(1), 3, 2)
TTemp3 = Mid(TTemp(1), 5, 2)
strTTemp = TTemp(0) & TTemp1 & " " & TTemp2 & " " & TTemp3

ElseIf Len(TTemp(1)) = 7 Then
TTemp1 = Mid(TTemp(1), 1, 3)
TTemp2 = Mid(TTemp(1), 4, 2)
TTemp3 = Mid(TTemp(1), 6, 2)
strTTemp = TTemp(0) & TTemp1 & " " & TTemp2 & " " & TTemp3

'Här nedan har jag försökt göra så att det går att lägga in Stockholmsnr.
'Det som inte fungerar är vissa telnr: ex: 08 - 550 313 30 det blir 08 - 550 133 30
'
ElseIf Len(TTemp(1)) = 8 Then
TTemp1 = Mid(TTemp(1), 1, 3)
TTemp2 = Mid(TTemp(1), 5, 3)
TTemp3 = Mid(TTemp(1), 7, 2)
strTTemp = TTemp(0) & TTemp1 & " " & TTemp2 & " " & TTemp3

End If
End If
End If
txtTelefon.Text = strTTemp
End Sub
/SJ :-(


Svara

Sv: Mid

Postades av 2005-01-17 16:12:20 - Sven Åke Persson

>Dim TTemp, TTemp1, TTemp2, TTemp3, TTemp4, TTemp5, strTTemp, MyPos As String

Detta är ju helt galet,det enda som blir String skall inte vara det, Mypos skall vara Long
<code>
Dim TTemp As String, TTemp1 As String
Dim TTemp2 As String, TTemp3 As String
Dim TTemp4 As String, TTemp5 As String
Dim strTTemp As String, MyPos As Long
</code>
Dvs du måste deklarera varje variabel ,nu var det bara MyPos som blev String som var fel ;-)
Dom andra blev Variant , vilket är en styggelse men Ok skulle funka.
Sen skall du använda Mid som String dvs ex.
<code>
TTemp1 = Mid$(TTemp1, 1, 3)
</code>

Finns det en Array TTemp(5) ? om inte kan du inte skriva TTemp(1) skall vara TTemp1 osv.
Mao en djä.. soppa konstigt att du får ut något alls ;-)

Jag skall skriva om hela din kod med hopp att du lär dig något.


Svara

Sv:Mid

Postades av 2005-01-17 17:25:48 - Sven Åke Persson


Edit: Upptäckte att det blir fel om numret slutar på "0" Återkommer


Svara

Sv: Mid

Postades av 2005-01-17 19:17:52 - Sven Åke Persson

Så här får det bli pga "nollor" på slutet
Surt att det inte gick att lösa med Format$
<code>
Option Explicit
Private Sub txtTelefon_LostFocus()
'Texten måste innehålla >= 6 tecken varav "-" skall vara ett.
If Len(txtTelefon.Text) > 6 Then
If InStr(txtTelefon.Text, "-") Then _
txtTelefon.Text = ConvertInNr(txtTelefon.Text)
End If
End Sub

Private Function ConvertInNr(ByVal nummer As String) As String
Dim ord1 As String, ord2 As String, ord3 As String
Dim pos As Long, i As Long
nummer = Replace(nummer, Chr$(32), "") 'ta bort onödiga mellanslag
pos = InStr(nummer, "-")
ord1 = Left$(nummer, pos - 1) & " -"
ord2 = Right$(nummer, Len(nummer) - pos)
ord3 = Left$(ord2, 3) & " "
For i = 4 To Len(ord2)
ord3 = ord3 & Mid$(ord2, i, 1)
If i Mod 3 = 0 Then ord3 = ord3 & " "
Next 'i
ConvertInNr = ord1 & " " & ord3
End Function

</code>


Svara

Sv:Mid

Postades av 2005-01-18 05:07:47 - Sven Jansson

Tackar...
Ska prova och se.
SJ

Det var skillnad!
Nu har jag provat och det är som det ska om det är XX-XXX XXX XX.
Får prova mig fram.
SJ :-)


Svara

Sv: Mid

Postades av 2005-01-18 20:07:40 - Sven Åke Persson

Finns lite finjusteringar kvar.Det är inte snyggt när det slutar på ett singeltal.
xxx-xxx xxx x
Borde vara
***- *** ** **
DS


Svara

Sv:Mid

Postades av 2005-01-19 00:42:16 - Sven Åke Persson

Alltid roligt att "dribbla" med ASCII tecken. Man kan göra mycket trix med dem !

Tex. är det klart för dig mfl.. att det alltid skilljer 32 mellan stora och små (versaler , gemena)

Dvs stora "A" är 65 . Lilla "a" är 65 + 32. Så kan du alltid omvandla.

Sen kommer besserwissernissarna och säger att det inte stämmer UNICODE , skratt :-)

Jag kan sedan skriva detta som Bitvis operationer. (And Or)

Det gör mig alltid så besviken att Ni aldrig tar åt Er gamla erfarenheter.
Ni har en djä.. förmåga att krångla till det som Vi kom på redan på 50 talet och innan det !


Svara

Sv: Mid

Postades av 2005-01-19 00:46:58 - Christer Svanberg

Detta "förhållande" kan säkert komma till användning framöver.

Visa gärna på fler inbyggda finesser som du hittat betr. ASCII-tecken.

ChristerGbg


Svara

Sv:Mid

Postades av 2005-01-19 00:58:13 - Sven Åke Persson

Anar din bitska kommentar :-;.
Det skiter jag i. Bitvis operationer är Guld och kan hjälpa många "troll" att se ljuset.

OCH OCH observera att detta är nybörjarforumet,
så vill du avancera så "please" gör det i ett annat Forum.

Fö fattar jag inte varför Ni sk. experter läser i detta Forum ?

"A" + 32 = "a" Så var budskapet ;-)

Ps
Jag skiter i Jantelagen
DS


Svara

Sv: Mid

Postades av 2005-01-19 01:38:17 - Christer Svanberg

Men alltså Sven...
Detta var alls ingen "bitsk kommentar" utan ett försök
att mötas på ett mer konstruktivt "plan" från min sida.

F´låt om jag inte var tillräckligt tydlig i min formulering.

Jag har aldrig sett mej själv som något annat än en
amatör och nybörjare då det gäller programmering.

Vi kan slänga käft då det gäller andra områden, men
då det gäller data och programmering så kommer jag
alltid att "suga åt mej som en svamp" av det du vill
förmedla och lära ut.

Budskapet har gått fram, och jag ser fram emot mer
av den "varan", helt ärligt och uppriktigt.

ChristerGbg

PS
Då det gäller Jantelagen är vi helt överens.
DS





Svara

Sv:Mid

Postades av 2005-01-19 02:44:39 - Sven Åke Persson

Oki Christer
Bara för att förmdla vad jag menar i ett NybörjarForum.

Man lär sig UCase och LCase.

I ASCII tabellen är 87 "W" gemena(lilla w) är 87 + 32 = 119 (Dom heter Versaler och Gemena)

mycket enklare att få fram än att kalla på "knäppa" funktioner UCase LCase

Dom har ett logiskt sammband i Bitvis operationer.


Svara

Sv:Mid

Postades av 2005-01-20 02:43:14 - Håkan Borneland

Hej!

Sven: En alternativ lösning..

Private Function ConvertInNr(ByVal nummer As String) As String
    Dim riktnr As String, telnr As String
    
    riktnr = Left$(nummer, InStr(nummer, "-") - 1) & " - "
    telnr = Mid$(nummer, InStr(nummer, "-") + 1)
    ConvertInNr = Replace(riktnr & IIf(Len(telnr) = 7 Or Len(telnr) = 10, 
    Format$(telnr, "### ### ## ##"), 
    StrReverse(Format$(StrReverse(telnr), "###,###"))), "  ", " ")
End Function


Svara

Sv:Mid

Postades av 2005-01-20 03:12:35 - André Claesson

En annan kul sak som många inte tänker på är att man kan konvertera en Char till en Int (om char är en siffra) genom att ta
myChar - Char(0)

Exempel:
<code>
Dim myChar As Byte
myChar = 53

MsgBox Chr(myChar) 'Dessa båda
MsgBox myChar - Asc(0) 'rader ger samma
</code>

eller i C där detta typ är enda/lättaste sättet att lösa detta på
<code>
myChar - '0'
</code>

/Andrec


Svara

Sv: Mid

Postades av 2005-01-20 09:21:33 - Sven Jansson

Håkan, har provat ditt alternativ det är samma resultat som blir med S - Å. Jag förstår nog inte din lösning?
Fortsätter att prova mig fram.
SJ :-)


Håkan. 05-01-20
Då förstår jag, det jag är ute efter var att telnr ska formateras efter hur oberoende många siffror det är. Samma system som man läser i telefonkatalogen.
---

Håkan Kl.16:45
HAr kopierat lite nummer från katalog:
Det kanske inte går på något smidigt sätt, ja jag är inte så klipsk att få till det, vet bara hur jag vill ha det!

0521-162 20

08-550 162 35

08-669 06 90

08-26 00 75

08-97 04 10

08-556 134 00

08-745 31 25

08-669 06 90

0771-77 78 88

070-647 58 58

0293-141 41


Svara

Sv:Mid

Postades av 2005-01-20 12:43:07 - Sven Åke Persson

Håkan
ConvertInNr = Replace(riktnr & IIf(Len(telnr) = 7 Or Len(telnr) = 10,
Format$(telnr, "### ### ## ##"),
StrReverse(Format$(StrReverse(telnr), "###,###"))), " ", " ")

Det var smart löst , precis vad jag letade efter men inte fick till.


Svara

Sv:Mid

Postades av 2005-01-20 13:17:35 - Håkan Borneland

Hej!

Är det inte så som du vill ha det?
Det går att ändra.
Ha antagligen inte förstått hur du vill formatera i så fall.
Lösningen jag gjorde gör samma som SvenPons gör.
Det var bara en alternativ lösning på samma problem.
Hade inget att göra.
Blev nyfiken på om man på någor sätt skulle kunna använda Format$(),
som SvenPon "efterlyste".

//Håkan


Svara

Sv:Mid

Postades av 2005-01-20 13:55:21 - Håkan Borneland

<b>Sven J: Då förstår jag,
det jag är ute efter var att telnr ska formateras efter hur oberoende många siffror det är.
Samma system som man läser i telefonkatalogen.
</b>

Funktionen bygger på att det finns ett "-" (som SvenPon förutsatte i sin lösning).
Sen formaterar den upp till 12 siffror efter "-".
Mig veterligen finns det inte nummer med så mycket siffror efter "-" (riktnummer).
Detta går att bygga ut.
Hur formateras nummer i katalogen (för lat att se efter)?

//Håkan


Svara

Sv: Mid

Postades av 2005-01-20 15:19:57 - Martin Adrian

>Tex. är det klart för dig mfl.. att det alltid skilljer 32 mellan stora och små (versaler , gemena)

Alltid är väl lite att ta i. Det gäller ju för bokstäver som finns med i ASCII men det enda fall där "åke" blir "ÅKE" med din metod är väl med svensk 7 bitars ascii som användes i ABC80 och på matrisskrivare.


Svara

Sv:Mid

Postades av 2005-01-20 17:20:13 - Sven Åke Persson

Nu är det ju ett VB forum vi resonerar kring. ABC80 har jag skickat till sophögen.
Jag utgår från VB :s ANSI Charter Set.

"Åke" blir Chr$(229 - 32) & "k" & "e"


Svara

Sv:Mid

Postades av 2005-01-20 20:07:27 - Håkan Borneland

Jaaaa du Sven J.

Den formateringen kan man inte fundera över.
Vid görsta anblicken (trött...zz) ser jag inte att det finns någon "regel" de grupperar efter "-".
Men nu tror jag att jag vet hur de tänker (eller så drömmer jag... :-) ).
Tydligen ska det inte vara mellanslag runt "-" heller.
Återkommer, om jag inte somnar.

//Håkan


Svara

Sv: Mid

Postades av 2005-01-20 23:24:13 - Sven Åke Persson

Som vanligt krånglar man till det i onödan.
Så här blir min slutlösning enkelt och rakt på.
<code>
Option Explicit
Private Sub txtTelefon_LostFocus()
'Texten måste innehålla >= 6 tecken varav "-" skall vara ett.
If Len(txtTelefon.Text) > 6 Then
If InStr(txtTelefon.Text, "-") Then _
txtTelefon.Text = ConvertInNr(txtTelefon.Text)
End If
End Sub

Private Function ConvertInNr(ByVal nummer As String) As String
Dim Rnr As String, Telnr As String
Dim pos As Long, i As Long
nummer = Replace(nummer, Chr$(32), "") 'ta bort onödiga mellanslag
pos = InStr(nummer, "-")
Rnr = Left$(nummer, pos - 1) & "-"
Telnr = Right$(nummer, Len(nummer) - pos)
Select Case Len(Telnr)
Case Is = 5
Telnr = Format$(Telnr, "### ##")
Case Is = 6
Telnr = Format$(Telnr, "### ###")
Case Is = 7
Telnr = Format$(Telnr, "### ## ##")
Case Is = 8
Telnr = Format$(Telnr, "### ### ##")
Case Is = 9
Telnr = Format$(Telnr, "### ### ###")
Case Is = 10
Telnr = Format$(Telnr, "### ### ## ##")
End Select
ConvertInNr = Rnr & Telnr
End Function
</code>


Svara

Sv:Mid

Postades av 2005-01-21 04:59:15 - Sven Jansson

Sven.
Tack som vanligt bra. Var lite på det spåret men fick inte till det.
Upplysningsvis fick jag bara ändra på:
Case Is = 6
Telnr = Format$(Telnr, "## ## ##")
så att det visar som jag anser att det ska vara.
SJ :-))


Svara

Sv:Mid

Postades av 2005-01-21 04:59:16 - Sven Jansson

Tröck två ggr.
:-(


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 721
27 958
271 751
6 190
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies