ReplaceString Stoppt das Programm

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

@ TS-Soft:
Ich meinte:
"Dann sollte es wenigstens ohne Debugger fehlerfrei laufen"
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
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 »

AND51 hat geschrieben:@ TS-Soft:
Ich meinte:
"Dann sollte es wenigstens ohne Debugger fehlerfrei laufen"
Mit einem Fehler kann es nicht fehlerfrei laufen :mrgreen:
VB-Progger nutzen ja gerne OnErrorNext, sowas in der Art stellst Du Dir
ja vor, sowas ist gefährlich und man sollte besser darauf verzichten!
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Falko

aber irgendein string kann ja auch nicht vorhanden sein,
also FindString kann ja völlig berechtigt 0 zurückliefern,
wenn man z.b. nach "ö" sucht.

auch hier würde ich vorher testen, ob der suchstring leer ist,
um den benutzer darauf hinzuweisen.

aber natürlich hast du in einem punkt recht:
FindString funktioniert insofern fehlerfrei,
dass bei einem leerstring der string garnicht erst durchsucht wird.
habs eben getestet... die laufzeit ist null.
(im gegensatz zu einem nicht-leeren suchstring)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Falko
Admin
Beiträge: 3531
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.0
Kontaktdaten:

Beitrag von Falko »

AND51 hat geschrieben:@ TS-Soft:
Ich meinte:
"Dann sollte es wenigstens ohne Debugger fehlerfrei laufen"
Naja, dann mach mal bitte den Debugger aus und teste:
WAS PASSIERT BEI DIR?

Code: Alles auswählen

OpenConsole()
Procedure Test_A(Test.s)
    Test_Eins.s = StringField(Test.s, 1, ";")
    Print(ReplaceString(Test.s,Test_Eins , ""))
EndProcedure


Print("Start")
Print("")
Print(Str(Test_A(";ABC;DEF;GHI")))
Print( "")
Print( "Ende")

Input(); Warte auf mich, ich fertig bin
CloseConsole()
Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Mit einem Fehler kann es nicht fehlerfrei laufen
Und deshalb sollte man ihn korrigieren, das ist es doch, worum ich, STring und Falko die ganze Zeit reden. Das müsstest du doch jetzt langsam verstehen!

> VB-Progger nutzen ja gerne OnErrorNext, sowas in der Art stellst Du Dir ja vor, sowas ist gefährlich und man sollte besser darauf verzichten
Habe ich gesagt, dass ich das benutze? Und ja, ich finde auch, dass es was besseres als onErrorNext.

WIe jemand hier schon gesagt hatte, sollte der Befehl mit Leerstrings einfach zurückkehren, ohne etwas zu unternehmen. Man braucht intern ja auch nur 2 Zeilen zu adden, das dürfte ja wohl nicht so schwer sein.

Code: Alles auswählen

Procedure ReplaceString()
   If StringToFind$ And StrngToReplace$
      ; eigentlicher Code
   EndIf
   ProcedureReturn Result$
EndProcedure
Aber das kann man sich ja schon denken.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Falko
Admin
Beiträge: 3531
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.0
Kontaktdaten:

Beitrag von Falko »

@Kaeru Gaman

Kleiner Denkfehler von mir. Es wird die Anzahl der Zeichen ausgegeben, wo dieses gesuchte Zeichen gefunden wurde, oder auch nicht. :oops:

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
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 »

@AND51
Du möchtest das PB den Programmierfehler abfängt und dann nichts macht.
Da kann man geteilter Meinung sein, ich möchte eine Meldung im Debugger
aber ansonsten soll mein Code bitteschön so ausgeführt werden, wie ich es
gecodet habe! In diesem Fall vielleicht nicht wichtig, da Endlosshleifen krieg
ich auch anders hin :mrgreen: , aber prinzipiell ist es besser der Compiler
übersetzt meinen Code, ich hab ja die Möglichkeit es mit dem Debugger zu
testen.
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
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Wie dem auch sei!
Ich hab mal wider was gelernt.
Demnach müsst ich vor jedem PB befehl Prüfen,
ob Strings Leer sind bevor ich sie verarbeiten lasse.
Echt super Programmiersprache.
PB v4.**
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@String

ne, das hast du falsch verstanden.

is ja ok, dass der befehl nich freezen sollte.

aber egal in welcher programmiersprache solltest du deinem benutzer eine
meldung geben "der Suchstring sollte nicht leer sein", wenn er es versucht.
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 werde es in Zukunft beachten. Danke. :allright:
PB v4.**
Gesperrt