Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 11:24 Der er 32 kommentarer og
2 løsninger

ÆØÅ fra DOS til Windows

Hej...

Er der nogle der har lidt kode som går en fil i gennem for æøå, vel og mærke æøå i dos-format, og bytter dem ud med æøå i windows format... Eller er der nogle som kender en kode til at åbne en dos-tekst-fil og så bare konvertere den til windows format..?


HASTER!
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 11:26 #1
' Tegnsætkonvertering ASCII/ANSI
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long


Public Function VBCharToOem(ByVal sInd As String) As String
    On Error GoTo OnErr
    CharToOem sInd, sInd
    VBCharToOem = sInd
    Exit Function
   
OnErr:
    Resume Next
End Function

Public Function VBOemToChar(ByVal sInd As String) As String
    On Error GoTo OnErr
    OemToChar sInd, sInd
    VBOemToChar = sInd
    Exit Function
   
OnErr:
    Resume Next
End Function
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 11:27 #2
CharToOEM konverterer fra Windows -> DOS (ANSI -> ASCII)
OEMToChar konverterer fra DOS -> Windows (ASCII -> ANSI)
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:13 #3
Jeg er ikke lige så hård til VB, men i dette tilfælde bliver jeg nød til at bruge det...

Men altså hvis jeg har en variabel som hedder 'var1' hvordan ændre jeg så æøå til rigtig format?

OEMToChar(var1) ?
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:14 #4
Eller VBOemToChar(var1) ?
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:14 #5
Eller hvad?
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:16 #6
Den kode, jeg postede, kan du sætte ind i et modul. Så har du fra det modul to public function, du kan bruge.

sOEMstring = vbchartooem(sANSIstring)

sANSIString = vboemtochar(sOEMString)
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:27 #7
Altså jeg har en kæmpe fil som der laver det der æøå forkert...

Men hvor skal jeg sætte denne kode ind?

Der er 2 sub's... En MAIN og en anden en...

"
sOEMstring = vbchartooem(sANSIstring)

sANSIString = vboemtochar(sOEMString)
"

Går det ikke lidt i ring eller er det mig?

Men altså kan du ikke skrive det med en variabel med navn 'var1'?
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:29 #8
vboemtochar(var1)
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:29 #9
Forresten jeg skal kun have fra DOS til Windows functionen...
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:30 #10
Skal den function-koden være i sub MAIN eller i den anden?
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:33 #11
Function-koden skal ikke være i sub Main.

Du opretter et nyt modul (.bas) og paster teksten mellem <Snip> og </Snip> ind i det.

<Snip>
' Tegnsætkonvertering ASCII/ANSI
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long



Public Function VBOemToChar(ByVal sInd As String) As String
    On Error Resume Next
    OemToChar sInd, sInd
    VBOemToChar = sInd
End Function
</Snip>

Herefter kan du bruge det overalt således:

VBOemToChar(Var1)

hvor den returnerede streng er konverteret fra DOS til Windows.
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:44 #12
"Du opretter et nyt modul (.bas)..." - Forklar... Jeg aner ingenting...
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:46 #13
Project, Add Module

Derefter kopierer du alt mellem <Snip> og </Snip> og sætter ind i kodevinduet i det nye modul. Navnet på det er fløjtende ligegyldigt - bare det kan gemmes uden fejlmeddelelser.
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:51 #14
Hmm... Jeg har måske lige glemt at sige jeg sidder med notesblok...

Selve det jeg laver/retter i er et tilføjelses program/modul til et andet program, så jeg sidder bare og skriver i notesblok i en fil (.cbs) som så bliver kørt af det andet program, når det starter op...
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:51 #15
Men det der står i .cbs-filen er VB kode...
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:54 #16
Hvorfor F..... (undskyld) bruger du nodepad til at redigere VB kode? Har du ikke adgang til en visual basic? Det er en mil gange nemmere, da du får syntax tjek med løbende. Desuden er der mange andre ting, der håndteres en mil gange bedre i Visual Basic end i notepad.

Næste postning kan du kopiere totalt og sætte ind i en fil og gemme den som EtEllerAndet.bas
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:54 #17
Option Explicit

' Tegnsætkonvertering ASCII/ANSI
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long



Public Function VBOemToChar(ByVal sInd As String) As String
    On Error Resume Next
    OemToChar sInd, sInd
    VBOemToChar = sInd
End Function
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:55 #18
Rettelse:
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:56 #19
Attribute VB_Name = "modOEM"
Option Explicit

' Tegnsætkonvertering ASCII/ANSI
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long



Public Function VBOemToChar(ByVal sInd As String) As String
    On Error Resume Next
    OemToChar sInd, sInd
    VBOemToChar = sInd
End Function
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 12:57 #20
Gem forrige som "modOEM.bas"

Indsæt derefter i vpb-filen (Visual Basic Project) følgende linie:

Module=modOEM; modOEM.bas
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 12:59 #21
Jeg har ikke adgang til nogen VB-editor, men det jeg har rettet har kun været småting...

Men så et spm. mere... Hvis jeg nu laver en fil kaldet extrakode.bas og putter det indhold der ind i, hvordan får jeg det så over i den anden fil, altså .cbs'en?
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 13:01 #22
Hmm... Glemte hvis at opdatere...
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 13:07 #23
Nå... Der er mere...

Nu har jeg så gjort det... Men altså den melder fejl... Og det er lige meget om jeg sætter 'Module=modOEM; modOEM.bas' inde i Sub MAIN eller lige før...

Fejlen er: End of statement expected.
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 13:09 #24
Linien

Module=modEOM; modOEM.bas

skal sættes ind i <Project>.vbp

Det er IKKE kode - det er en oplysning til VB-compileren om, at den skal have filen modOEM.bas med under navnet modOEM.
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 13:41 #25
Jamen... Koden bliver jo ikke compilet... Den bliver bare kørt direkte af det andet program...

Kan man ikke bare lave noget andet..?
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 13:44 #26
Nu skal jeg lige have noget på det rene:

Snakker vi Visual Basic, eller snakker vi en eller anden form for VBScript?
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 13:49 #27
"Selve det jeg laver/retter i er et tilføjelses program/modul til et andet program, så jeg sidder bare og skriver i notesblok i en fil (.cbs) som så bliver kørt af det andet program, når det starter op..."

Altså inde i programmet der hedder det 'kør kommando', og den fil jeg retter i det er en som en eller anden prof. har lavet... Men han er på ferie i øjeblikket så nu bliver jeg nødtil selv at prøve...
Men altså det er noget script-ting som bliver kørt af det program... Men den der function-ting kan den ikke lægges ind i selve det her script?
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 13:56 #28
Altså i scriptet der er der en sub MAIN, som med mellemrum checker om en fil eksistere... Hvis denne fil så eksistere, så køre den filen igennem og splitter den ved hver komma, disse bliver så til variabler som bliver sat ind i programmet, og den sætte så disse variabler ind i en skabelon, hvorefter der så bliver udskrevet en masse labels... Selve den komma seperede-fil kommer fra concorden C5 (DOS-version)...

Det virker på nær ÆØÅ... Og det er så det jeg vil have til at virke ved at kigge i det script, og så køre alle de variabler i gennem en funktion som erstatter ÆØÅ (DOS) til ÆØÅ (Windows)...

Og altså selve, den der sub MAIN, hvis den finder den fil, så sender starter den en anden sub...
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 14:04 #29
Dit script understøtter højst sandsynlig ikke API-kald.

Men du er nok i en forkert kategori - der er andre grupper, der omhandler forskellige former for scripts.

IMHO bør du lukke her og flytte til en relevant kategori.
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 14:10 #30
Jamen, kan dine functions ikke stå andre steder end i en .bas-fil?

Hvilken kategori skulle jeg ellers vælge?
Avatar billede bennytordrup Nybegynder
30. juni 2003 - 14:13 #31
functions VB* kan godt

Problemet er declare function ... der indikerer import af en funktion fra en Windows DLL. Det kan Visual Basic. Det kan VBScript ikke.

VBScript har sin egen kategori under Programmering : Script : VBScript
I kategorien Programmering : Script kan du se hvilke script-grupper, der er oprettet.
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 14:25 #32
Okay, nu forstår jeg...
Avatar billede m-koldsgaard Nybegynder
30. juni 2003 - 14:31 #33
Avatar billede m-koldsgaard Nybegynder
01. juli 2003 - 08:29 #34
Lukket... Tak for din indsats benny.tordrup
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging