geo1st487 Δημοσ. 2 Ιανουαρίου 2016 Δημοσ. 2 Ιανουαρίου 2016 Εχω την εξης απορια. Υπαρχουν συναρτησεις WinAPI που να τρεχουν π.χ. σε WinXP και να μη τρεχουν σε νεοτερα windows (7, 8 10); Σας εχει τυχει να εχετε χρησιμοποιησει WinApi σε καποιο προγραμμα το οποιο βαλατε μετα σε νεοτερα windows και δεν δουλευε η winapi συναρτηση ή δεν δουλευε σωστα; Χρησιμοποιω σε ενα προγραμμα που κανω καποιες συναρτησεις winapi σε λειτουργικο windows vista και σκεφτομαι μηπως θα υπαρχει ασυμβατοτητα αν βαλω το προγραμμα να τρεξει σε λειτουργικο windows 8 & 10. Ξερω οτι ο καλυτερος τροπος ειναι να το δοκιμασω για να ειμαι σιγουρος απλως δεν εχω καποιο pc (ουτε virtual pc) με win 8 & 10, γιαυτο κανω αυτη την γενικη ερωτηση.
παπι Δημοσ. 2 Ιανουαρίου 2016 Δημοσ. 2 Ιανουαρίου 2016 Στο msdn σου λεει για την καθε συναρτηση απο που τρεχει. Το μεχρι που... Γενικα η ms δεν ακυρωνει μερη του api της. Και στα 10ρια υπαρχουν συναρτησεις απο τα 16bitα. Αν δεν κανω λαθος.
M2000 Δημοσ. 2 Ιανουαρίου 2016 Δημοσ. 2 Ιανουαρίου 2016 Υπάρχει θέμα. Πχ κάποτε πριν σώσω ένα αρχείο μέσα από vb6 έκανα μετατροπή σε κεφαλαία. Το ίδιο όταν το φόρτωνα. Στα xp δούλευε. Στα 7 όχι. Τα 7 δεν γυρνάνε το ς σε Σ. 1
geo1st487 Δημοσ. 3 Ιανουαρίου 2016 Μέλος Δημοσ. 3 Ιανουαρίου 2016 Υπάρχει θέμα. Πχ κάποτε πριν σώσω ένα αρχείο μέσα από vb6 έκανα μετατροπή σε κεφαλαία. Το ίδιο όταν το φόρτωνα. Στα xp δούλευε. Στα 7 όχι. Τα 7 δεν γυρνάνε το ς σε Σ. Εκανες χρηση συναρτηση winapi για την μετατροπη σε κεφαλαια;
M2000 Δημοσ. 3 Ιανουαρίου 2016 Δημοσ. 3 Ιανουαρίου 2016 Καρατσεκαρισμένο: Declare Function CharUpper Lib "user32.dll" Alias "CharUpperA" ( _ ByVal lpsz As String) As String Sub check() Dim s As String s = "Γιώργος" CharUpper s Debug.Print s End Sub και σε Unicode έκδοση (δείτε εδώ το lpsz είναι Long και περνάμε το δείκτη στο s, τα string είναι BSTR και έχουν στο τέλος διπλό 0) Declare Function CharUpper Lib "user32.dll" Alias "CharUpperW" ( _ ByVal lpsz As Long) As String Sub check() Dim s As String s = "Γιώργος" CharUpper StrPtr(s) Debug.Print s End Sub Στα 7 θα δώσει ΓΙΏΡΓΟς στα XP θα δώσει ΓΙΏΡΓΟΣ
geo1st487 Δημοσ. 3 Ιανουαρίου 2016 Μέλος Δημοσ. 3 Ιανουαρίου 2016 Στα 7 θα δώσει ΓΙΏΡΓΟς στα XP θα δώσει ΓΙΏΡΓΟΣ Τελικα το καλυτερο ειναι να δοκιμαζεται η εφαρμογη σε ολα τα λειτουργικα (και ετσι πρεπει να γινεται) γιατι ποτε δεν ξερεις. Στη δικη σου περιπτωση μπορεις πολυ ευκολα να κανεις μια δικια σου συναρτηση που να σου λυσει το προβλημα. Παλια που προγραμματιζα σε vb6 εκανα χρηση την συναρτηση ucase της vb για μετατροπη πεζων σε κεφαλαια απλως δεν θυμαμαι αν ειχε το ιδιο προβλημα με την winapi που χρησιμοποιησες.
M2000 Δημοσ. 3 Ιανουαρίου 2016 Δημοσ. 3 Ιανουαρίου 2016 Εγώ που το ξέρω γιατί το έμαθα με το δύσκολο τρόπο το έχω φτιάξει (δες το κώδικα της Μ2000) https://github.com/M2000Interpreter/Version8/ https://github.com/M2000Interpreter/Version8/blob/master/Mod_Util.bas γραμμή 4306 Function myUcase(ByVal A$, Optional Convert As Boolean = False) As String και παρακάτω Function myLcase(ByVal A$) As String και Function mylcasefILE(ByVal A$) As String Τώρα σώνω για αρχεία με μικρά (εκτός και αν έχω δώσει στις ρυθμίσεις να μην γίνει αλλαγή πεζών - κεφαλαίων, οπότε η mylcasefILE() δεν αλλάζει τίποτα) Η myLcase αλλάζει το σ σε ς ανάλογα με το τι ακολουθεί. Έτσι το ΓΙΩΡΓΟΣ θα το κάνει Γιωργος και όχι Γιωργοσ Ο προγραμματισμός δεν ήταν ποτέ απλή υπόθεση για μένα!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα