 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 22.12.2006, 20:04 Titel: Routine zum ersetzen von text |
|
|
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  _________________ 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 |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 22.12.2006, 20:23 Titel: |
|
|
Hallo, ich habe das Gefühl, das du nicht genau weißt, wie man mit Funktionen und Subs umgeht.
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 22.12.2006, 21:52 Titel: |
|
|
das klaert alles
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 22.12.2006, 23:10 Titel: |
|
|
Nicht ganz. Mid() braucht drei Argumente, du hast nur zwei drin.
Code: |
Mid(String,startpos,nchars).
|
Grüsse!
Croco |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.12.2006, 23:11 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.12.2006, 23:58 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 23.12.2006, 10:58 Titel: |
|
|
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 |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 23.12.2006, 13:26 Titel: |
|
|
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  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 23.12.2006, 16:51 Titel: |
|
|
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  _________________ 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 |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 23.12.2006, 17:13 Titel: |
|
|
So ähnlich sieht meine eigenen Funktion auch aus, hab mal eine vor ein paar Monaten gemacht, sowas braucht man immer mal  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 23.12.2006, 22:48 Titel: |
|
|
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 |
|
 |
studio
Anmeldungsdatum: 08.08.2005 Beiträge: 34
|
Verfasst am: 15.02.2007, 17:46 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.02.2007, 18:15 Titel: |
|
|
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 |
|
 |
studio
Anmeldungsdatum: 08.08.2005 Beiträge: 34
|
Verfasst am: 19.02.2007, 17:05 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|