| Visual Basic for Applications (VBA) Ερωτήσεις / Απαντήσεις σε σχέση με τη χρήση της VBA. |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα Πως μπορώ να διαβάσω Bytes απο ενα Texbox. Παράδειγμα: αν εχω 17 Bytes σε ενα TexBox, θέλω να του πω διαβασε το πρώτο Byte αν ειναι 1 ή 0 να το αποθηκεύει σε μια μεταβλητή και αν γίνετε να το σβήνει απο το Texbox ή να το αγνοεί για να μπορω να διαβάσω ξεχωριστά τα αλλα 16 Bytes |
|
#2
|
|
Καλησπέρα Γιώργο! Τα Bytes σου είναι 18, όχι 17. Αυτό συμβαίνει επειδή η VB λειτουργεί με συμβολοσειρές Unicode που σημαίνει ότι κάθε σύμβολο αποτελείται από 2 Bytes (ASCII = 8 Bit, Unicode = 16 Bit). Θα πρέπει λοιπόν να μετατρέψεις το κείμενο του TextBox σε ASCII χρησιμοποιώντας τη συνάρτηση StrConv (για VB, VBA) και μετά να το περάσεις σε ένα Byte-array από όπου θα μπορείς να ελέγξεις τα Byte. Παράδειγμα: Κώδικας: 'VB6
Sub CheckFirstByte()
Dim n As String
Dim b() As Byte
Dim i As Integer
n = vbNullChar & "αβγ" ' vbNullChar to Byte = 0
b = StrConv(n, vbFromUnicode)
Debug.Print "Bytes: "; UBound(b) + 1
If b(0) = 0 Then
Debug.Print("First Byte was 0")
For i = 1 To UBound(b)
Debug.Print(b(i))
Next
End If
End Sub
' στη VB.Net:
Private Sub CheckFirstByte()
Dim n As String
Dim b() As Byte
n = vbNullChar & "αβγ"
b = System.Text.Encoding.GetEncoding(1252).GetBytes(n) ' 1253 για την ελληνική κωδικοποίηση
Debug.Print("Bytes: " & UBound(b) + 1)
If b(0) = 0 Then
Debug.Print("First Byte was 0")
For i = 1 To UBound(b)
Debug.Print(b(i))
Next
End If
End Sub
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word |
|
#3
| |||
| |||
| Παράθεση:
Έχω κάτι στο μυαλό μου προσπαθώ να το ολοκληρώσω αλλά δεν ξέρω αν το πηγαίνω σωστά. Μου είχες στείλει και ένα άλλο πρόγραμμα για να διαβάζω κωδικούς από ένα txt αρχείο αυτό είναι μια χαρά. Το πρόβλημα είναι ότι έρχεται και ένας χαρακτήρας 1 ή 0 μπροστά από το κωδικό ανάλογα από πού θα γίνει η ανάγνωση του(Πόρτα εισόδου ή Πόρτα εξόδου). Πως μπορώ να ταιριάξω τα παρακάτω προγράμματα έτσι ώστε αν ο κωδικός ξεκινά με χαρακτήρα 1 να μου λέει ότι ο πρώτος χαρακτήρας είναι 1 ή 0 και μετά να τον αγνοεί και να ελέγχει τους υπόλοιπους χαρακτήρες ανοίγοντας το αρχείο txt και αν βρει τον κωδικό να μου ότι ο κωδικός είναι στο αρχείο. Private Sub OKToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKToolStripMenuItem.Click Dim StreamToDisplay As IO.StreamReader Dim x As String, CompareString As String, CodeFound As Boolean Me.TextBox1.Text = vbNullString CompareString = Me.txtkodikos.Text Try StreamToDisplay = New IO.StreamReader("C:\Energa klidia.txt") Catch If StreamToDisplay Is Nothing Then MsgBox("File not found!") Exit Sub End If End Try Do Until StreamToDisplay.EndOfStream x = StreamToDisplay.ReadLine If x = CompareString Then CodeFound = True Exit Do End If Loop If CodeFound = True Then TextBox1.Text = ("Ο κωδικός υπάρχει") Else TextBox1.Text = ("Άκυρος κωδικός!") End If StreamToDisplay.Close() '___________________________________________' Dim n As String Dim b() As Byte n = vbNullChar & txtkodikos.Text b = System.Text.Encoding.GetEncoding(1252).GetBytes(n) ' 1253 για την ελληνική κωδικοποίηση TextBox2.Text = ("Bytes: " & UBound(b) + 1) For i = 1 To UBound(b) Debug.Print(b(i)) If b(0) = 0 Then TextBox2.Text = ("First Byte was 0") End If If b(0) = 1 Then TextBox2.Text = ("First Byte was 1") End If Next End Sub |
|
#4
|
|
Γιώργο, ο κωδικός που ο πρώτος χαρακτήρας είναι 1 ή 0 αν κατάλαβα καλά προέρχεται;
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word |
|
#5
| |||
| |||
| Έχω δυο αναγνώστες σε πόρτα εισόδου και εξόδου. Το χαρακτήρα 1 ή 0 τον στέλνω εγώ μέσω του μικροελεγκτή για να ξέρω ποια πόρτα άνοιξε αλλά όταν γίνετε η ανάγνωση του κωδικού μου έρχεται κολλητά στον κωδικό το 1 ή το 0. Αν δεν στείλω 1 ή 0 έρχεται μόνο ο κωδικός και αυτό δουλεύει μια χαρά .
|
|
#6
|
|
Γιώργο γνωρίζω ελάχιστα πράγματα για το έργο σου για να μπορέσω να σε ακολουθήσω. Που μπορούμε να βρούμε αυτόν τον κωδικό για να τον επεξεργαστούμε; Σε πεδίο μήπως; Δώσε μας τα φώτα σου!
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word |
|
#7
| |||
| |||
| Είναι από την Tibbo, το πρόγραμμα που τρέχει ο μικροελεγκτης μοιάζει με Basic . Οι κωδικοί που διαβάζω είναι απλοί κωδικοί αν έχετε ακουστά από τα κλειδιά iButton σε χαρακτήρες ASCII κάπως έτσι 01ADCFB312000012. Ο μικροελεγκτης επικοινωνεί με τον υπολογιστή με δίκτυο Ethernet. Δεν ξέρω αν έγινα κατανοητός.
|
|
#8
|
|
Γιώργο μου καλά όλα αυτά. Εγώ στον κώδικα πώς θα επικαλεστώ αυτόν τον κωδικό προκειμένου να σε βοηθήσω; Που βρίσκεται πάνω στη φόρμα; Τι όνομα έχει το πεδίο ή η μεταβλητή που τον περιέχει; Έχουμε λοιπόν τον κωδικό 01ADCFB312000012 έστω με τη μεταβλητή strTibbo Για να ελέγξουμε αν το πρώτο του ψηφίο είναι 1 ή 0 χρησιμοποιούμε: Κώδικας: Dim strTibbo As String = "01ADCFB312000012"
If Strings.Left(strTibbo, 1) = 0 Or Strings.Left(strTibbo, 1) = 1 Then
MsgBox("Ο κωδικός αρχίζει από " & Strings.Left(strTibbo, 1))
strTibbo = Strings.Mid(strTibbo, 2) ' Ο κωδικός χωρίς το πρώτο ψηφίο
' ... Εδώ ο κώδικας που κάνει την αναζήτηση στο αρχείο Energa klidia.txt
End If
Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word |
|
#9
| |||
| |||
| Παράθεση:
Τελικά το έκανα αλλιώς. Διάβαζε τον κωδικό πχ << 01ADCFB312000012 >> αλλά όπως είπα ήθελα να έλεγχο και ποια πόρτα άνοιξε έτσι μαζί με αυτόν τον κωδικό μου ερχόταν και ένας 1 ή 0 από μπροστά δηλαδή πχ << 1 01ADCFB312000012>> και τον διάβαζε σαν άκυρο κωδικό. Αυτό που έκανα είναι Dim rawstr, cleanstr As String rawstr = txtkodikos.Text ‘βάλε τον κωδικό στην μεταβλητή rawstr cleanstr = rawstr.Remove(0, 1)’σβησε τον πρώτο χαρακτηρα και βαλε τον ‘νέο κωδικό στην μεταβλητή cleanstr txtNote.Text = cleanstr ‘εμφανισε τον νέο κωδικό παρακάτω έβαλα το πρόγραμμα να διαβάζει τον κωδικό από την μεταβλητή cleanstr και δούλευε καλά. Ευχαριστώ πολύ και πάλι με βοήθησες πολύ. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| Εργαλεία Θεμάτων | |
| Τρόποι εμφάνισης | |
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [Γενικά] Πως μπορώ να μεταφέρω τα δεδομένα που θα επιλέγω από μια στήλη σε μια άλλη | sakplak | Excel - Ερωτήσεις / Απαντήσεις | 22 | 09-03-12 17:08 |
| [Excel07] Πώς μπορώ να χρησιμοποιήσω στήλες διαφορετικών διαστάσεων | mtheristis | Excel - Ερωτήσεις / Απαντήσεις | 11 | 11-08-11 19:41 |
| Πώς μπορώ να θέσω νέο θέμα | LEFTERIS | Off topic - Εκτός θέματος | 1 | 11-05-11 17:47 |
| [VBA] Login_SplashScreen σε excel πως μπορώ να το κάνω? | fotis | Excel - Ερωτήσεις / Απαντήσεις | 2 | 10-05-10 21:44 |
Η ώρα είναι 11:59.




Αλλαγή σε γραμμικό τρόπο

