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

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

Δημοσ.

Εχω την εξης απορια. Υπαρχουν συναρτησεις WinAPI που να τρεχουν π.χ. σε WinXP και να μη τρεχουν σε νεοτερα windows (7, 8 10);

Σας εχει τυχει να εχετε χρησιμοποιησει WinApi σε καποιο προγραμμα το οποιο βαλατε μετα σε νεοτερα windows και δεν δουλευε η winapi συναρτηση ή δεν δουλευε σωστα;

 

Χρησιμοποιω σε ενα προγραμμα που κανω καποιες συναρτησεις winapi σε λειτουργικο windows vista και σκεφτομαι μηπως θα υπαρχει ασυμβατοτητα αν βαλω το προγραμμα να τρεξει σε λειτουργικο windows 8 & 10.

Ξερω οτι ο καλυτερος τροπος ειναι να το δοκιμασω για να ειμαι σιγουρος απλως δεν εχω καποιο pc (ουτε virtual pc) με win 8 & 10, γιαυτο κανω αυτη την γενικη ερωτηση.

 

Δημοσ.

Στο msdn σου λεει για την καθε συναρτηση απο που τρεχει. Το μεχρι που... Γενικα η ms δεν ακυρωνει μερη του api της. Και στα 10ρια υπαρχουν συναρτησεις απο τα 16bitα. Αν δεν κανω λαθος.

Δημοσ.

Υπάρχει θέμα. Πχ κάποτε πριν σώσω ένα αρχείο μέσα από vb6 έκανα μετατροπή σε κεφαλαία. Το ίδιο όταν το φόρτωνα. Στα xp δούλευε. Στα 7 όχι. Τα 7 δεν γυρνάνε το ς σε Σ.

  • Like 1
Δημοσ.

Υπάρχει θέμα. Πχ κάποτε πριν σώσω ένα αρχείο μέσα από vb6 έκανα μετατροπή σε κεφαλαία. Το ίδιο όταν το φόρτωνα. Στα xp δούλευε. Στα 7 όχι. Τα 7 δεν γυρνάνε το ς σε Σ.

 

Εκανες χρηση συναρτηση winapi για την μετατροπη σε κεφαλαια;

Δημοσ.

Καρατσεκαρισμένο:

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 θα δώσει ΓΙΏΡΓΟΣ

Δημοσ.

 

Στα 7 θα δώσει ΓΙΏΡΓΟς στα XP θα δώσει ΓΙΏΡΓΟΣ

 

Τελικα το καλυτερο ειναι να δοκιμαζεται η εφαρμογη σε ολα τα λειτουργικα (και ετσι πρεπει να γινεται) γιατι ποτε δεν ξερεις.

 

Στη δικη σου περιπτωση μπορεις πολυ ευκολα να κανεις μια δικια σου συναρτηση που να σου λυσει το προβλημα.

Παλια που προγραμματιζα σε vb6 εκανα χρηση την συναρτηση ucase της vb για μετατροπη πεζων σε κεφαλαια απλως δεν θυμαμαι αν ειχε το ιδιο προβλημα με την winapi που χρησιμοποιησες.

Δημοσ.

Εγώ που το ξέρω γιατί το έμαθα με το δύσκολο τρόπο το έχω φτιάξει (δες το κώδικα της Μ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 αλλάζει το σ σε ς ανάλογα με το τι ακολουθεί. Έτσι το ΓΙΩΡΓΟΣ θα το κάνει Γιωργος και όχι Γιωργοσ

Ο προγραμματισμός δεν ήταν ποτέ απλή υπόθεση για μένα!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...