ReplaceString Stoppt das Programm

Fragen und Bugreports zur PureBasic 4.0-Beta.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

String hat geschrieben:Es ist ein Fehler
ist es nicht.
nicht jede verhaltensänderung von 3.94 auf 4.0 ist ein fehler.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Eine verhaltensänderung währe wenn PB meckert oder gar nichts ausgibt.
Aber wenn PB einfach stehen bleibt,
bei einem Befehl der noch nicht einmall eine Schleife ist.
(Selbst wenn der Befehl so arbeitet)
Dann ist es in meinen Augen ein Fehler. :o
PB v4.**
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

der eine sagt, es isn Bug in PB der andere sagt, der Bug sitzt vorm bildschirm.

ich versuch zu vermitteln, und es wird ignoriert.

dann leckt mich doch einfach. ich hab keine zeit für so'n scheiß.


schreib nen bugreport im internationalen forum, wenns dich häppi macht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Ich bin schon happy! :allright: :lol: :allright:
PB v4.**
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Code: Alles auswählen

Debug ReplaceString("lala" , "", "")
wenn ich nach einem Leerstring in einem String suche, sollte eben das einzig
logische passieren: es wird nix ersetzt, weil der Leerstring ja nicht im String
vorhanden ist. Auf jeden Fall sollte sich das Programm dann nicht aufhängen.

Grüße ... Kiffi

@Kearu: Cool down. Uns ist allen warm :-)
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn man nach nix im nix sucht sollte man aus der Sonne gehen :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Hallo!

Ich habe den Tzread hier ein bisschen beobachtet und möchte mal meine Sichtweise mitteilen.

Ich finde, ReplaceString(String$, "", "") sollte schon funktionieren, auch wenn nichts geschieht. Es kann doch immer wieder vorkommen, dass die Parameter 2 und 3 leer sind, weil das Ergebnis, dass ich via Netzwerk, aus einer Datei oder einer Datenbank erhalte, fälschlicherweise leer ist. Wenn ich dann versehentlich eine leere Variable durch ReplaceString() jage, kackt das Programm unnötig ab.

Intern sollte also ReplaceSTring() sofort ein ProcedureReturn ausführen, wenn der 2. Parameter leer ist. Der 3. Parameter dar fja in jedem Fall leer sein, denn ab und zu wollen Leute auch Strings löschen.

@ String:
Dazu noch was: Um Strings zu löschen, benutze lieber RemoveString(). Ich weiß nicht, ob du das vergessen hast oder ob du das extra mit ReplaceString() erledigen wolltest - ich wollte dich/euch nur nochmal dran erinnern.

@ Kiffi:
Oh, ich sehe gerade, du hast das gleiche geschrieben wie ich... Macht nichts, ich stimme dir dann eben auch zu. <)

> nicht jede verhaltensänderung von 3.94 auf 4.0 ist ein fehler
Das ist richtig, aber in diesem Fall schon (ich denke jetzt mal laut):
Meint ihr, Beim Update von 3.94 auf 4.00 sei an der FUnktion ReplaceString() was verändert worden? Ich glaube nicht, zumal es dann doch im Changelog stehen müsste.

Wenn also die Funktion ReplaceString() vorher funktionierte, warum funktioniert sie dann jetzt nicht mehr (mit Leerstrings)?
Das kann doch nur heißen, dass doch etwas an der Funktion verändert wurde (m. E. unwahrscheinlich) oder es führt ein anderer Faktor zu diesem Fehler. Keine Ahnung, was diese anderen Faktoren sein könnten, vielleicht beeinflussen neue Features wie Fix-Strings das verhalten.

> @Kearu: Cool down. Uns ist allen warm
Ja genau, Kaeru, cool down und spar dir die Energie für's Programmeiren auf! Ich möchte noch mal irgendwann ein tolles Programm/Spiel von dir sehen! :lol:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

AND51 hat geschrieben:Hallo!
Um Strings zu löschen, benutze lieber RemoveString()
Gut das Du darauf hinweist, ist ja auch richtig.
Aber ReplaceString hat schon einen Sinn, wenn man die Anführungszeichen
durch eine Variable ersetzt.
Ich habe das Beispiel halt schnell mal zusammengebaut als ich den Fehler
(das Problem) bemerkt hatte.
PB v4.**
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn hier jemand etwas vermißt, das ist im Mülleimer
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Kiffi hat geschrieben:

Code: Alles auswählen

Debug ReplaceString("lala" , "", "")
wenn ich nach einem Leerstring in einem String suche, sollte eben das einzig
logische passieren: es wird nix ersetzt, weil der Leerstring ja nicht im String
vorhanden ist. Auf jeden Fall sollte sich das Programm dann nicht aufhängen.

Grüße ... Kiffi

@Kearu: Cool down. Uns ist allen warm :-)
Ein Leerstring sieht aber in Wirklichkeit so aus :lol:

Code: Alles auswählen

Debug ReplaceString("lala UND Tralala" , " ", ""); Wenn man Leerstrings löschen will, siehe Text
Also müßte das andere, "Nichts" sprich "" als Fehler ausgegeben werden.
Error by Zero oder ähnlich, wie es auch andere Compiler machen.

Für mich ist es eindeutig ein BUG

Gruss Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Gesperrt