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:

Routine zum ersetzen von text

 
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
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 22.12.2006, 20:04    Titel: Routine zum ersetzen von text Antworten mit Zitat

Code:

Dim As Integer anfang, ende
Dim As String vorher, nachher, quellcode, suchen, ersetzen

Declare Function ersetzen(quellcode, suchen, ersetzen) As String

Input quellcode
Input suchen
Input ersetzen

quellcode = ersetzen(quellcode, suchen, ersetzen)
? quellcode
Sleep

Function ersetzen(quellcode, suchen, ersetzen) As String
    anfang = Instr(quellcode,suchen)-1
    ende = anfang+Len(suchen)-1
    vorher=Left(quellcode,anfang)
    nachher=Mid(quellcode, anfang+Len(suchen)+1)
    quellcode = vorher+ ersetzen + nachher 
Return quellcode
End Function


Wenn ich es ausführen will bekomme ich immer einen Fehler. Was muss ich verändern? Für mich sieht das ganze richtig aus. HILFE weinen
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 22.12.2006, 20:23    Titel: Antworten mit Zitat

Hallo, ich habe das Gefühl, das du nicht genau weißt, wie man mit Funktionen und Subs umgeht. Zunge rausstrecken
Du hast am Anfang deines Programms Variablen definiert, die du später in der Funktion brauchst. Das geht so nicht.
Jede Funktion/Sub hat eine Variablen. Du kannst es dir so vorstellen, als wenn es ein anderes Programm wäre, welches lediglich ein paar variablen "bekommt". Diese Variablen sind die Argumente.

Ein weiterer Fehler, den du gemacht hast:
Variablennamen dürfen nicht den gleichen Namen wie Subs/Funktionen oder Befehle haben.

Code:
Dim As String quellcode, suchen, ersetzen_

Declare Function ersetzen(text As String, such As String, ersetze As String) As String

Input quellcode
Input suchen
Input ersetzen_

quellcode = ersetzen(quellcode, suchen, ersetzen_)
? quellcode
Sleep

Function ersetzen(text As String, such As String, ersetze As String) As String
    Dim As Integer anfang, ende
    Dim As String vorher, nachher

    anfang = Instr(text,such)-1
    ende = anfang+Len(such)-1
    vorher=Left(text,anfang)
    nachher=Mid(text, anfang+Len(such)+1)
    Return vorher + ersetze + nachher 
End Function

_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 22.12.2006, 21:52    Titel: Antworten mit Zitat

das klaert alles happy
thx a lot, da hab ich nicht dran gedacht.
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 22.12.2006, 23:10    Titel: Antworten mit Zitat

Nicht ganz. Mid() braucht drei Argumente, du hast nur zwei drin.

Code:

Mid(String,startpos,nchars).


Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 22.12.2006, 23:11    Titel: Antworten mit Zitat

mid geht auch mit 2 args. wenn das dritte ausgelassen wird, werden alle chars ab dem start-parameter verwendet.
_________________
» 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: 22.12.2006, 23:58    Titel: Antworten mit Zitat

Hi,
Manchmal hilft ein Blick auf ytwinky.freebasic.de
Dort gibts schon ein Replace.Bas
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
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 23.12.2006, 10:58    Titel: Antworten mit Zitat

meine routine zum ersetzten funktionier aber doch...
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 23.12.2006, 13:26    Titel: Antworten mit Zitat

Nein, nicht ganz.

Mach mal folgendes:

quelltext = "12345 test 12345"
suchtext = "12345"
ersetztext = "test"

Bei dir ist die Ausgabe dann "test test 12345", es sollte aber "test test test" sein Zunge rausstrecken
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 23.12.2006, 16:51    Titel: Antworten mit Zitat

ich sehe was du meinst, aber dass laesst sich leicht beheben:
Code:


Dim As String quellcode, suchen, ersetzenmit

Declare Function ersetzen(text As String, such As String, ersetze As String) As String

Input quellcode
Input suchen
Input ersetzenmit

quellcode = ersetzen(quellcode, suchen, ersetzenmit)
? quellcode
Sleep

Function ersetzen(text As String, such As String, ersetze As String) As String
    Dim As Integer anfang, ende
    Dim As String vorher, nachher
   
    Do 
        anfang = Instr(text,such)-1
        ende = anfang+Len(such)-1
        vorher=Left(text,anfang)
        nachher=Mid(text, anfang+Len(such)+1)
        text = vorher + ersetze + nachher
        If Instr(text,such) = 0 Then
            Return text
        End If
    Loop
   
     
End Function



so klappts zwinkern
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 23.12.2006, 17:13    Titel: Antworten mit Zitat

So ähnlich sieht meine eigenen Funktion auch aus, hab mal eine vor ein paar Monaten gemacht, sowas braucht man immer mal grinsen
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 23.12.2006, 22:48    Titel: Antworten mit Zitat

danke fuer die Hilfe
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 15.02.2007, 17:46    Titel: Antworten mit Zitat

Hallo!

Betreff: Mehrsprachigkeit auf MDE-Geräten

Default sind amerikanische Zeichen aktiviert. Die Einstellung der "Character-Sets" kann ich
über die Funktion "COUNTRY$" ändern.

Spanisch wäre z.B. "S".
Spanisch hat so nette Sonderzeichen wie Ñ o. ¿.
ASCII-Tabelle: (HEX)
Ñ = D1
¿ = BF

Ich musste feststellen, dass die visuelle Darstellung der HEX Werte auf dem MDE andere Zeichen sind.
D1 und BF symbolisieren japanische Schriftzeichen.

Eine korrekte Darstellung der jeweiligen spanischen Sonderzeichen sind erst über die Aktivierung von
COUNTRY$ = S und des entsprechenden HEX-Wertes möglich.
Ñ = 5C
¿ = 5D
(siehe Programmers Manual S. 579)

Aktuell sieht meine Funktion folgendermaßen aus:
Code:
    DEF FNersetzen$(text$,such$,ersetze$)
       
        laenge% = LEN(text$)
       
        FOR i% = 1 TO laenge%
            IF INSTR(text$,such$) = 0 THEN   
                FNersetzen$ = text$
                i% = laenge%
            ELSE
                anfang% = INSTR(text$,such$)-1
                ende% = anfang%+LEN(such$)-1
                vorher$ = LEFT$(text$,anfang%)
                nachher$ = MID$(text$,anfang%+LEN(such$)+1)
                text$ = vorher$ + ersetze$ + nachher$       
            END IF
        NEXT i%
   
    END DEF


Die oben aufgeführte Funktion ermöglicht mir ein Zeichen zu ersetzen.
Allerdings möchte ich nicht nur ein Zeichen überprüfen sondern alle
Sonderzeichen der jeweiligen Sprache. FAZIT: die Funktion müsste
entsprechend ausgebaut bzw. angepasst werden.

Beispiel:
---------
Eine Zeile auf dem MDE-Geräte enthält zwei unterschiedliche
Sonderzeichen (Ñ,¿).

Mein Gedanke war es, die jeweiligen Sonderzeichen der einzelnen
Sprachen in einer separaten Datei zu hinterlegen.

Beispiel: (Land | HEX-vorher | HEX-nachher)
ES D1 5C
ES BF 5D

Im Vorfeld muss natürlich die entsprechende COUNTRY$ Einstellung
hinterlegt sein -> "S".

Wie würdet Ihr das Problem angehen?

Über Vorschläge Tipps würde ich mich sehr freuen.

Gruß
studio
_________________
Entwicklungsumgebung:
---------------------------
Hardware: Denso BHT 300 / SATO Etikettendrucker (MB 200)
Software: BHT-Basic (Ähnlichkeiten zu MSDOS-Basic)
Infos: ftp://www.denso-id.de/Documents/Manuals/Programmers_Manuals/Denso_OS/BHT300_Programmers_Manual_E.pdf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 15.02.2007, 18:15    Titel: Antworten mit Zitat

Hi studio,
meinst vllt. sowas, das ich für TransUmlaut.Bas gemacht habe?
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
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 19.02.2007, 17:05    Titel: Antworten mit Zitat

Hallo!

@ytwinky:

Vielen Dank für Deine Hilfe.

So schaut meine Funktion aus:
Code:
DEF FNersetzen$(text$,land$)
                textneu$ = ""
                laenge% = LEN(text$)
       
                OPEN DATchar$ AS charFile% RECORD 40000
                    FIELD #charFile%,4 AS landcharD$,2 AS charneuD$
       
                    FOR i% = 1 TO laenge%
                        zeichen$ = MID$(text$,i%,1)
           
                        char$ = HEX$(ASC(zeichen$))
                        landchar$ = land$+char$
       
                        landrow% = SEARCH(#charFile%,landcharD$,landchar$)
       
                        IF landrow% <> 0 THEN
                            GET #charFile%, landrow%
                           
                            hexwert$ = "&H"+charneuD$
                            dezwert% = VAL(hexwert$)
                            zeichen$ = CHR$(dezwert%)
                        END IF   
       
                        textneu$ = textneu$ + zeichen$
                    NEXT i%
       
                CLOSE charFile%
               
                FNersetzen$ = textneu$
END DEF


Die Datei mit den Sonderzeichen sieht wie folgt aus:

Code:
SPBF5D -> ¿
SPD15C -> Ñ
SPF15C -> ñ

DEDC5D
DEFC5D
DED65C
DEF65C
DEC45B
DEE45B
DEDF7E


Gruß
studio
_________________
Entwicklungsumgebung:
---------------------------
Hardware: Denso BHT 300 / SATO Etikettendrucker (MB 200)
Software: BHT-Basic (Ähnlichkeiten zu MSDOS-Basic)
Infos: ftp://www.denso-id.de/Documents/Manuals/Programmers_Manuals/Denso_OS/BHT300_Programmers_Manual_E.pdf
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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