Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

!!Umlaute Richtig Darstellen!!

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 16.08.2007, 23:49    Titel: !!Umlaute Richtig Darstellen!! Antworten mit Zitat

Eine Frage die hier immer wieder auftaucht.
Warum werden meine Umlaute nicht richtig dargestellt?

Das Problem liegt in den unterschiedliches Zeichenätzen,
während man unter Windows mit dem ANSI Zeichensatz arbeitet
arbeitet FB mit ASCII (vielleicht wars auch umgekehrt grinsen )

Jedenfalls, wurde das kleine Problem schon oft durch Konstanten/SUBs und
Funktionen geloest....

Hier habe ich ein kleines Tutorial dazu geschrieben.

Und hier ist Nicht-Windows Variante um (hoffentlich) alle Umlaute richtig darstellen zu
koennen.

Code:

Function myANSI2ASCII (Byval ConvertString As String) As String
    Dim OutString As String=ConvertString
   
    For l As Integer=0 To Len(OutString)-1
        Select Case As Const OutString[l]
            Case 207
                OutString[l]=216
            Case 160
                OutString[l]=255
            Case 128,129
                OutString[l]=63
            Case 130
                OutString[l]=39
            Case 131
                OutString[l]=159
            Case 132
                OutString[l]=34
            Case 133
                OutString[l]=46
            Case 134
                OutString[l]=197
            Case 135
                OutString[l]=206
            Case 136
                OutString[l]=94
            Case 137
                OutString[l]=37
            Case 138
                OutString[l]=83
            Case 139
                OutString[l]=60
            Case 140
                OutString[l]=79
            Case 141,143,144
                OutString[l]=63
            Case 142
                OutString[l]=90
            Case 145,146
                OutString[l]=39
            Case 147,148
                OutString[l]=34
            Case 149
                OutString[l]=7
            Case 150,151
                OutString[l]=45
            Case 152
                OutString[l]=126
            Case 153
                OutString[l]=84
            Case 154
                OutString[l]=115
            Case 155
                OutString[l]=62
            Case 156
                OutString[l]=111
            Case 157
                OutString[l]=63
            Case 158
                OutString[l]=122
            Case 159
                OutString[l]=89
            Case 161
                OutString[l]=173
            Case 162
                OutString[l]=189
            Case 163
                OutString[l]=156
            Case 164
                OutString[l]=207
            Case 165
                OutString[l]=190
            Case 166
                OutString[l]=221
            Case 167
                OutString[l]=145
            Case 168
                OutString[l]=149
            Case 169
                OutString[l]=184
            Case 170
                OutString[l]=166
            Case 171
                OutString[l]=174
            Case 172
                OutString[l]=170
            Case 173
                OutString[l]=240
            Case 174
                OutString[l]=169
            Case 175
                OutString[l]=238
            Case 176
                OutString[l]=248
            Case 177
                OutString[l]=241
            Case 178
                OutString[l]=253
            Case 179
                OutString[l]=252
            Case 180
                OutString[l]=239
            Case 181
                OutString[l]=230
            Case 182
                OutString[l]=244
            Case 183
                OutString[l]=250
            Case 184
                OutString[l]=247
            Case 185
                OutString[l]=251
            Case 186
                OutString[l]=167
            Case 187
                OutString[l]=175
            Case 188
                OutString[l]=172
            Case 189
                OutString[l]=171
            Case 190
                OutString[l]=243
            Case 191
                OutString[l]=168
            Case 192
                OutString[l]=183
            Case 193
                OutString[l]=181
            Case 194
                OutString[l]=182
            Case 195
                OutString[l]=199
            Case 196
                OutString[l]=142
            Case 197
                OutString[l]=143
            Case 198
                OutString[l]=146
            Case 199
                OutString[l]=128
            Case 200
                OutString[l]=212
            Case 201
                OutString[l]=144
            Case 202
                OutString[l]=210
            Case 203
                OutString[l]=211
            Case 204
                OutString[l]=222
            Case 205
                OutString[l]=214
            Case 206
                OutString[l]=215
            Case 208
                OutString[l]=209
            Case 209
                OutString[l]=165
            Case 210
                OutString[l]=227
            Case 211
                OutString[l]=224
            Case 212
                OutString[l]=226
            Case 213
                OutString[l]=229
            Case 214
                OutString[l]=153
            Case 215
                OutString[l]=158
            Case 216
                OutString[l]=157
            Case 217
                OutString[l]=235
            Case 218
                OutString[l]=233
            Case 219
                OutString[l]=234
            Case 220
                OutString[l]=154
            Case 221
                OutString[l]=237
            Case 222
                OutString[l]=232
            Case 225
                OutString[l]=160
            Case 223
                OutString[l]=225
            Case 224
                OutString[l]=133
            Case 226
                OutString[l]=131
            Case 227
                OutString[l]=198
            Case 228
                OutString[l]=132
            Case 229
                OutString[l]=134
            Case 230
                OutString[l]=145
            Case 231
                OutString[l]=135
            Case 232
                OutString[l]=138
            Case 233
                OutString[l]=130
            Case 234
                OutString[l]=136
            Case 235
                OutString[l]=137
            Case 236
                OutString[l]=141
            Case 237
                OutString[l]=161
            Case 238
                OutString[l]=140
            Case 239
                OutString[l]=139
            Case 240
                OutString[l]=208
            Case 241
                OutString[l]=164
            Case 242
                OutString[l]=149
            Case 243
                OutString[l]=162
            Case 244
                OutString[l]=147
            Case 245
                OutString[l]=228
            Case 246
                OutString[l]=148
            Case 247
                OutString[l]=246
            Case 248
                OutString[l]=155
            Case 249
                OutString[l]=151
            Case 250
                OutString[l]=163
            Case 251
                OutString[l]=150
            Case 252
                OutString[l]=129
            Case 253
                OutString[l]=236
            Case 254
                OutString[l]=231
            Case 255
                OutString[l]=152
        End Select
    Next l
    Return OutString
End Function

Ein kleines Beispiel zum testen:
Code:

DIM Test AS STRING="öäüÖÄÜáúùß"
?myASCII2ANSI(Test)
SLEEP

_________________


Zuletzt bearbeitet von Eternal_pain am 20.08.2007, 05:11, insgesamt 4-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.08.2007, 01:07    Titel: Antworten mit Zitat

mit eckigen klammern... das is sogar ytwinky-konform durchgeknallt lachen Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 17.08.2007, 13:20    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
mit eckigen klammern... das is sogar ytwinky-konform durchgeknallt lachen Zunge rausstrecken


Aber der Code ist nicht Michael Konform durchgeknallt

"Select Case As Const" ist in diesem Falle noch schneller/besser, da du ja eh nur Konstanten verwendest (207, 160, etc.) Zunge rausstrecken
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 17.08.2007, 13:29    Titel: Antworten mit Zitat

Ist nachgelesen, getestet, für gut befunden und geändert worden grinsen

Edit: noch eine kleine aenderung eingebracht;
l-1 durch l ersetzt und in die For/Next dementsprechend angepasst.
Die "l-1" duerfte in der geschwindigkeit wohl kaum merkbar sein, hoffe aber das es besonders bei haeufigen einsetzen auch mit grossen Strings noch die eine oder andere ms bringt zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 22.08.2007, 20:45    Titel: Antworten mit Zitat

Gegen diese elendlange Select Case-Anweisung muß es doch ein Rezept geben..
Hier ist eins, genauer gesagt 3(eins davon ist für Kassenpatienten lachen)
hf
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 22.08.2007, 23:35    Titel: Antworten mit Zitat

die uANSI2ASCII gefaellt mir als 'Nicht'-Windows Variante am besten, werd sie morgen mal ausprobieren zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.08.2007, 02:13    Titel: Antworten mit Zitat

Code:
SUB uANSI2ASCII (BYREF OutString AS STRING)
  Static As UByte AscAnsDat(128)={ _
           63,  63,  39, 159,  34,  46, 197, 206,  94,  37,  83,  60,  79, 63, 63, 63, _
           90,  39,  39,  34,  34,   7,  45,  45, 126,  84, 115,  62, 111, 63, 122, 89, _
          255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
          248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
          183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
          209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 160, _
          225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
          208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
    FOR i AS UINTEGER=0 TO LEN(OutString)-1
      If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
    NEXT i
END SUB


Das war eindeutig am schnellsten happy

Code:
for xy as integer=0 to 9

    COUNTER_BEGIN
    uANSI2ASCII(Test)
    locate 1,1:?Test
    counter_end
   
    erg+=counter_cycles
next xy

?erg/10


Bei mir durchschnittlich mit ~161000 cycles
zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
peter_u



Anmeldungsdatum: 19.09.2006
Beiträge: 17
Wohnort: Remscheid, NRW

BeitragVerfasst am: 08.01.2008, 22:06    Titel: Umlaute bzw. Euro-Zeichen Antworten mit Zitat

Hallo@all.

Ich möchte kein neues Thema aufmachen und hoffe, daß meine Vorgehensweise meine Frage hier zu stellen, richtig ist.

Ich nutze für das Umwandeln der Umlaute:

Code:

Function umlaute(text As String) As String
   CharToOem StrPtr(text), StrPtr(text)
   umlaute=text
End Function


Für das Euro-Zeichen benutze ich zur Ausgabe am Bildschirm CHR(238) ergibt das "Eurozeichen" mit einem Querstrich als Behelf.
Beim Ausdruck benutze ich CHR(213) - zur Info: HP Laserjet 2300 eingebaute Schriftart eurofähig bei Nutzung der Codetabelle PC 858 = 13U

Gibt es die Möglichkeit unter FB das Eurozeichen auf den Bildschirm zu bringen? Meine Versuche scheitern kläglich.

Ich habe die Funktion von Eternal-Pain - auch auf Freebasic-Portal.de Tutorial zu finden - ausprobiert.

Ergebnis:

C:\FreeBASIC\bin\win32\ld.exe: cannot open output file test.exe: Permission denied

Gleiches Ergebnis bei fb:porticula - AnsiiToAscii-TestCode grinsen von ytwinky

Die windows.bi ist eingebunden, ich nutze die neueste Version von FB und FBEdit.

Wäre dankbar für einen Tipp.

Gruss Peter[/code]
_________________
Der alte Mann lernt noch
--- Learning by doing ---
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.01.2008, 22:37    Titel: Antworten mit Zitat

1. Ich lade keinen Code ohne besondere Kennzeichnung hoch, der nicht läuft..
(o.g. Code läuft bei mir fehlerfrei)
TestCode bedeutet hier bloß:zum Ausprobieren(Rumspielen)
2. könnte es sein, daß da noch ne vorige Instanz vom Programm aktiv ist?
Die Zeichen, die FB ohne weitere Klimmzüge darstellen kann, findest du hier:
FB-Zeichen im Konsolen-Modus
FB-Zeichen im Grafik-Modus
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
peter_u



Anmeldungsdatum: 19.09.2006
Beiträge: 17
Wohnort: Remscheid, NRW

BeitragVerfasst am: 09.01.2008, 02:24    Titel: Antworten mit Zitat

Hallo ytwinky,

sorry - wollte niemandem auf den Fuß treten. Ich habe vor rund 20 Jahren letztmalig mit (Power-) Basic programmiert und musste mich nun mit meinen fast 50 Jahren in FB einarbeiten. Es ist unstreitig große Klasse, daß es dieses Forum gibt - ich habe schon einige meiner Probs dadurch gelöst. Aber es passiert halt auch (bei älteren Beiträgen), dass "nix geht" - vermutlich wegen alter FB-Versionen. Und da ich keinen Fehler finden konnte mein Beitrag...

...aber im aktuellen Fall muß ich sagen: Mea culpa - es lief eine Instanz. Ich Dussel habe dies übersehen, weil ich die beiden Funktionen ohne einen Screen-Befehl laufen ließ und daher für mich keine Ausführung sichtbar war. - Allerdings kann ich im Ergebnis keinen Unterschied zu der in meinem obigen Beitrag genannten 4-Zeiler Function Umlaute feststellen.

Zum Eurozeichen: Es wird ja nun seit ein paar Jahren von ein "paar" Millionen Menschen benutzt und es muß doch (irgendwann?) möglich sein, dies in FB darzustellen.

WinXP hat in der Codepage 850 kein Eurozeichen. Man kann dies jedoch ändern. Wen es interessiert hier die URL:
[URL]
http://freenet-homepage.de/duelmenerskatclub/files/Euro_Dos_XP.txt
[/URL]
Wäre hiermit das Euro-Zeichen unter FB möglich?

Im Übrigen: Danke ytwinky für die FB-Zeichen im Grafik-/Konsolenmodus.

Gruss Peter
_________________
Der alte Mann lernt noch
--- Learning by doing ---
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.01.2008, 16:31    Titel: Antworten mit Zitat

Das Eurozeichen würde meines Wissens nach dann aber nur in der Konsolenausgabe funktionieren und es ist doch einiges an direkter Systemmanipulation. Wenn man es nur "temporär" ersetzen will, müsste man auf den VGA-Speicher zugreifen, aber das würde nur im Vollbild funktionieren und ebenfalls nur in der Konsole. Mein Variante wäre halt Draw String im SCREEN-Modus mit eigener Font lächeln
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 09.01.2008, 23:33    Titel: Antworten mit Zitat

Ich fühlte mich keineswegs auf den Schlips getreten, ich habe nur ein paar Sachen klarstellen wollen.. happy
(Ich glaub, das ist mir auch geglückt..)
Vorschläge für 'Erweiterungen' von FreeBASIC kannst du gerne hier machen, nur erreichen die das Entwicklerteam nicht, da die Mitglieder des englischen Forums, hier, sagen wir mal, eher selten vorbeischauen(das mag an der hier im Forum verwendeten deutschen Sprache liegen).
Vielleicht liegt ja hier auch der Grund dafür, daß das €-Zeichen noch keinen Eingang in FB gefunden hat. Es betrifft eben nicht den Großteil der Community..
Ich denke mal, wenn es darum geht, daß das Entwickler-Team sich voll und ganz der Erweiterung(z.B. OOP) widmet, ist das €-Zeichen ein 'Problem', von dem man sagen kann Priorität: Idle vor lachen auf dem Boden rollen
..und wenn du den Tipp von Jojo nimmst und im FB-Portal und der Referenz stöberst, solltest du egtl bald dein Chr(128) oder wie auch immer zu Papier bringen können xD
btw: http://ytwinky.freebasic.de ist eine Seite, die du dir gerne ansehen kannst, auch ohne was runterzuladen.. zwinkern
Wenn du Englisch kannst findest du natürlich auch im englischen Forum Hilfe: http://www.freebasic.net/forum/viewtopic.php?t=10351
(Ich habe den Code nur gesehen und nicht getestet..)
Btw:
Ich habe den Code der beiden Programme geändert und auch in AlleSources.Zip aktualisiert..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 18.11.2010, 00:57    Titel: Antworten mit Zitat

Hallo Freebasic-Freunde,
danke für den informativen Beitrag.
Ich habe die Function von ytwinky aus dem Tutorial in mein Programm eingefügt,
wo sehr viel Textausgabe bewältigt wird, und entsprechend viele Umlaute dargestellt werden müssen.

Es klappt auch wunderbar, nur das "ß" wird nicht korrekt dagestellt, sondern als "a" mit Apostroph.
Muss ich da noch was ändern, damit auch das "ß" richtig dargestellt wird ?
(ß -> 225)

Hier nochmal der Code der Funktion:

Code:

FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
  DIM AS STRING OutString=ConvertString
  Static As UByte AscAnsDat(128)={ _
           63,  63,  39, 159,  34,  46, 197, 206,  94,  37,  83,  60,  79, 63, 63, 63, _
           90,  39,  39,  34,  34,   7,  45,  45, 126,  84, 115,  62, 111, 63, 122, 89, _
          255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
          248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
          183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
          209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 160, _
          225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
          208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
    FOR i AS INTEGER=0 TO LEN(OutString)-1
      If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
    NEXT i
  RETURN OutString
END FUNCTION


Vielen Dank bereits für die Hilfe,
lächeln
HungGar
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 18.11.2010, 01:23    Titel: Antworten mit Zitat

hui, ewig nimmer gesehen das ding hier grinsen

Code:
FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
  DIM AS STRING OutString=ConvertString
  Static As UByte AscAnsDat(128)={ _
           63,  63,  39, 159,  34,  46, 197, 206,  94,  37,  83,  60,  79, 63, 63, 63, _
           90,  39,  39,  34,  34,   7,  45,  45, 126,  84, 115,  62, 111, 63, 122, 89, _
          255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
          248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
          183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
          209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 225, _
          225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
          208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
    FOR i AS INTEGER=0 TO LEN(OutString)-1
      If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
    NEXT i
  RETURN OutString
END FUNCTION


keine ahnung wo der fehler sich da eingeschlichen hatte, aber da war eine 160 wo eine 225 haette sein sollen, hoffe es klappt nun
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 18.11.2010, 21:38    Titel: Antworten mit Zitat

Ja, danke

So funktioniert´s
happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hicki



Anmeldungsdatum: 16.08.2013
Beiträge: 1

BeitragVerfasst am: 16.08.2013, 08:40    Titel: Antworten mit Zitat

Hi,

wie und wo baue ich das Script ein?

Gruß Hicki
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 16.08.2013, 08:52    Titel: Antworten mit Zitat

Es handelt sich dabei um eine Funktion, also einfach an irgend eine Stelle deines Quelltextes hineinkopieren, vorzugsweise ganz am Anfang oder ganz an den Schluss (vielleicht eine Autoren-Nennung dazufügen happy ), und dann innerhalb deines Programms aufrufen.
Code:
PRINT uANSI2ASCII("Das wäre ein übersichtlich kurzer Test.")

Wichtig ist noch, dass der Compiler die Funktion kennen muss, bevor du sie das erste mal aufrufst. Wenn du sie ganz an den Anfang gestellt hat, ist das bereits erledigt - ansonsten musst du sie zu Beginn des Programms noch bekannt machen:
Code:
DECLARE FUNCTION uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 16.08.2013, 19:43    Titel: Antworten mit Zitat

Von allen Lösungen her, die hier diskutiert werden, ist die Verwendung fertiger Bibliotheksfunktionen am besten, denn sonst erfindet man das Rad laufend neu. Ansonsten soll noch genannt bleiben, dass FreeBasic eigentlich den MS-DOS-Zeichensatz, genau genommen Codepage 437 als Standard-Zeichensatz übernommen hat. => So betrachtet eine Umwandlungs-FUNCTION lieber z.B. Ansi2Cp437 nennen.

Unter Linux gibt es auf Shell-Befehlszeilenebene bekanntlich "recode", bei PHP die iconv-Funktion für so etwas. Wer gerne für FreeBasic etwas "Gutes" programmieren möchte, tut sich auch gut dran, die FUNCTION lieber neutral als z.B. ConvString o.ä. benennen mit 3 zu übergebenden Parameter (umzuwandelnder String, Zeichensatz_in, Zeichensatz_out).

Selbstverständlich ist eine Konvertierung grundsätzlich nie ganz verlustfrei möglich, da es immer Zeichen gibt, die im Zielzeichensatz nicht abbildbar sind, denn praktisch jeder genau 256 Zeichen grosser 8-Bit-Zeichensatz ist immer eine Untermenge von UTF-8 (bei Unicode wird bekanntlich angestrebt, weltweit jedes Zeichen als eindeutige Codeposition darzustellen). -> Von daher ist eine gute FB-Bibliothek mit einer hier diskutierten FUNCTION-Prozedur schnell einmal ein ziemlich anspruchsvolles Projekt.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz