Προς το περιεχόμενο

Γραφική σε VB 6


nekstath

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σε όλους.

Συγχωρέστε με εάν έχω ανοίξει σε λάθος σημείο νέο θέμα ή αν η ερώτηση που θα κάνω έχει γίνει ήδη αλλά όσο και αν έψαξα δεν μπόρεσα να βρω πουθενά απάντηση στο πρόβλημά μου.

 

Το πρόβλημά μου είναι ότι σε ένα πρόγραμμα που φτιάχνω θέλω σε κάποιο σημείο ο χρήστης να μου δίνει μια μαθηματική εξίσωση και το πρόγραμμα να φτιάχνει την γραφική της. Έψαξα στο ίντερνετ βρήκα πληροφορίες για το MsChart που έχει η VB6 αλλά κάτι πρέπει να έκανα λάθος και δεν μου έβγαζε σωστά την γραφική. Συνέχισα το ψάξιμο και βρήκα το "FusionCharts for VB", πολύ καλό πρόγραμμα, μου βγάζει σωστά τις γραφικές αλλά έχει ένα πρόβλημα, αν του βάλω να μου κάνει την χ=1.3 μου φτιάχνει την χ=13 και αν του βάλω την χ=1,3 δεν μου εμφανίζει τίποτα. Από ότι κατάλαβα για να δουλέψει σωστά θέλει για κόμμα το "." ενώ η vb6 θέλει το ",". Μπορεί κάποιος να με βοηθήσει με αυτό το πρόβλημα ή να μου προτείνει κάποιο άλλο με το οποίο να κάνω την δουλειά μου?

 

Ευχαριστώ εκ των προτέρων!

 

Υ.Γ. Έφτιαξα μια συνάρτηση που να μου μετατρέπει το "1,3" σε "1.3" αλλά όταν μετατρέπω την μεταβλητή από string σε single τότε η μεταβλητή παίρνει τον αριθμό "13". :fear:

Δημοσ.

Βασικά το χ=1,3 είναι παράδειγμα. Το πρόβλημα είναι ότι δεν ξέρω πόσα δεκαδικά μπορεί να μου δώσει ο χρήστης. Δηλαδή άλλωτε μπορεί να δώσει την πχ 3*χ^3+0,0234*χ^2-1,2*χ+0,0000234 και άλλωτε την 3*χ^3+0,34*χ^2-2*χ+0,234

Οπότε αν και καλή ιδέα δεν με βολεύει σε όλες τις περιπτώσεις. :(

Δημοσ.

Τουλάχιστον θα δεις άμα παίζει. Εαν παίζει τότε μπορείς να διαβάσεις το πλήθος των δεκαδικών κάθε φορά και να διαιρέσεις με το 10^ν. Βέβαια είναι λίγο "μπακαλίστικος" τρόπος αλλά άμα παίζει...

Επίσης μήπως υπάρχει κάποιο θέμα με τα Cultures (ή όπως λέγονται στην VB6); Δηλαδή βλέπει το "." για "," και τούμπαλιν και για αυτό σου δημιουργεί πρόβλημα (όπως αναφέρεις και εσύ);

Δημοσ.

Σε ευχαριστώ πολύ φίλε macabre_sunsets για την ιδέα. Ναι είναι λίγο "μπακάλικος" τρόπος αλλά θα το δοκιμάσω μπας και βοηθήσει.

 

Φίλε ntaryl το έχω ακούσει και γω αυτό να μου το λένε και άλλοι, αλλά δεν είμαι και πολύ σχετικός με τα activex στοιχεία οπότε όσο και αν έχω κοιτάξει δεν έχω βρει κάτι (μάλλον δεν ξέρω πως να το ψάξω σωστά). Αν έχεις να μου προτείνεις κάποιο θα το εκτιμούσα.

(Αυτό που ψάχνω είναι να φτιάχνει την γραφική μιας μαθηματικής εξίσωσης, όχι τίποτα πολύπλοκο.)

Δημοσ.

Έχεις δοκιμάσει να την φτιάξεις μόνος σου χρησιμοποιώντας lines? Φαντάζομαι ότι θα θέλεις μια γραφική για ένα περιορισμένο αριθμό Χ και Υ (100, 1000, 10000, όχι άπειρο παντως).

Δεδομένου του Χ θα βρίσκεις τις τιμές του Υ και θα δημιουργείς ένα ζευγάρι αριθμών. Έπειτα θα δημιουργείς ένα line που θα συνδέει το παρών ζευγάρι με το προηγούμενο. Έτσι θα δημιουργηθεί η γραφική, βέβαια δεν θα είναι και πολύ ομαλή αλλά ίσως κάνεις την δουλειά σου μάλλον.

Δημοσ.
Έχεις δοκιμάσει να την φτιάξεις μόνος σου χρησιμοποιώντας lines? Φαντάζομαι ότι θα θέλεις μια γραφική για ένα περιορισμένο αριθμό Χ και Υ (100, 1000, 10000, όχι άπειρο παντως).

Δεδομένου του Χ θα βρίσκεις τις τιμές του Υ και θα δημιουργείς ένα ζευγάρι αριθμών. Έπειτα θα δημιουργείς ένα line που θα συνδέει το παρών ζευγάρι με το προηγούμενο. Έτσι θα δημιουργηθεί η γραφική, βέβαια δεν θα είναι και πολύ ομαλή αλλά ίσως κάνεις την δουλειά σου μάλλον.

 

Το έχω δοκιμάσει, είχα βάλει και μικρό βήμα και ήταν μια χαρά η καμπύλη. Το πρόβλημα που είχα ήταν οτί ενώ μπορούσα και ρύθμιζα τον Χ άξονα, όταν έκανα ακριβώς το ίδιο στον Υ δεν έπιανε με αποτέλεσμα η καμπύλη να μην μου φαίνεται στο παράθυρο. Μετά δεν είχα και στους άξονες τιμές, πχ "1,2,3,... κλπ" και το εγκατέλειψα. Λογικά θα γίνεται αλλά επειδή δεν είμαι και γνώστης της γλώσσας και κάτι τέτοια τώρα τα μαθαίνω με τη βοήθεια του google, δεν ήξερα πως να το φτιάξω και το άφησα.

Δημοσ.
Τουλάχιστον θα δεις άμα παίζει. Εαν παίζει τότε μπορείς να διαβάσεις το πλήθος των δεκαδικών κάθε φορά και να διαιρέσεις με το 10^ν. Βέβαια είναι λίγο "μπακαλίστικος" τρόπος αλλά άμα παίζει...

Επίσης μήπως υπάρχει κάποιο θέμα με τα Cultures (ή όπως λέγονται στην VB6); Δηλαδή βλέπει το "." για "," και τούμπαλιν και για αυτό σου δημιουργεί πρόβλημα (όπως αναφέρεις και εσύ);

 

Τελικά δεν παίζει αυτός ο τρόπος γιατί πάλι όταν κάνει την πράξη εσωτερικά βάζει το ","....:cry:

Δημοσ.

το πρόβλημα σου έχει να κάνει με τα regional settings των windows στον υπολογιστή

σου.Μπορείς να αλλάξεις τις ρυθμίσεις εκεί και να αλλάξεις την υποδιαστολή

από , σε .

 

ή να το κάνεις έτσι

 

>
Private Function fixkoma(text As String, koma As Boolean) As String
Dim i, length As Integer
length = Len(text)
Dim komaprin, komameta As String
komaprin = ","
komameta = "."

If koma = True Then
komaprin = "."
komameta = ","
End If

For i = 1 To length
If Mid(text, i, 1) = komaprin Then text = Left(text, i - 1) + komameta + Right(text, length - i)
Next
fixkoma = text

End Function

Private Sub Form_Load()
Dim koma As Boolean
koma = True
If Val("69.69") = 69.69 Then koma = False
MsgBox Val(fixkoma("12,345", koma))
MsgBox Val(fixkoma("12.345", koma))
End Sub

 

το οποίο δουλεύει πάντα ανεξάρτητα από τα regional settings του pc σου.

Δημοσ.

Εγώ είχα φτιάξει αυτό τον κώδικα για να μου το μετατρέπει:

>
Private Sub Command1_Click()
Dim x As String
Dim y As Single

x = Text1.Text
x = fNumb(x)
Label1.Caption = x
End Sub


Private Function fNumb(num)

Dim TestArray() As String
Dim Num1, Num2 As String
Dim z, lenZ As Integer

  TestArray() = Split(num, ",")   'split --> divides the string. Each piece i in Array(i)
  
  Num1 = Val(TestArray(0))
   
  z = 0
  For Each cell In TestArray()
  z = z + 1
  Next cell
  
  If z = 2 Then
  Num2 = TestArray(1) ' Val(TestArray(1))
  lenZ = Len(Num2)
  Else
  lenZ = -1
  Num2 = 0
  End If
  
  Num1 = CStr(Num1)
  Num2 = CStr(Num2)
  
  
  fNumb = Num1 + "." + Num2
  If lenZ > 0 Then
  Label2.Caption = lenZ ' gia na mou deiksei posa psifia exei meta to koma
  Else
  Label2.Caption = " --- "
  End If
  
  
  'fNumb = CSng(fNumb)
  
End Function

 

Αλλά και πάλι δεν μου δούλευε γιατί όταν κάνω αυτή την πράξη για να αποθηκεύσω το αποτέλεσμα σε έναν πίνακα

>
For X = Strt To Stp
       If A <> 0 Or B <> 0 Or C <> 0 Or D <> 0 Or E <> 0 Then
               arrData(iDat, 0) = iDat
           arrData(iDat, 1) = ((A / 10 ^ nA) * X ^ 4 + (B / 10 ^ nB) * X ^ 3 + (C / 10 ^ nC) * X ^ 2 + (D / 10 ^ nD) * X + (E / 10 ^ nE))
           iDat = iDat + 1
       End If
   Next X

στην πράξη πχ "A / 10 ^ nA" (όπου nA τα ψηφία που έχει μετά το κόμμα) το αποτέλεσμα πάλι το αποθηκεύει με "," και όταν περνάω τον πίνακα αυτό στο άλλο για να μου φτιάξει την γραφική δεν δουλεύει.

 

Ελπίζω να μην σας μπέρδεψα, απλά νομίζω ότι και πάλι θα έχω το ίδιο πρόβλημα. Με λίγα λόγια θέλω να γίνεται η πράξη κανονικά και όταν είναι να το αποθηκεύσω να είναι με "." για να δουλέψει.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...