Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richtig

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Tanaghra
Beiträge: 28
Registriert: 13.05.2017 01:44

Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richtig

Beitrag von Tanaghra »

Hallo,

ich wollte mal fragen, ob folgender Fehler auch bei Euch auftritt und ich ihn ggf. im englischen Forum posten soll.

Angenommen, ich will einen Variablennamen im gesamten Quellkode ändern. Ich habe das immer so gemacht, daß ich die entsprechenden Eingaben in den Feldern ’Suchen nach:’ und ’Ersetzen mit’ gemacht und den Haken bei ’Nur ganze Wörter’ gesetzt habe. Geht nicht (mehr), weil PureBasic nicht alles findet.

Wenn ich z.B. alle Variablen mit dem Namen Spa durch AdSp ersetzen will, so wird Spa in folgender Zeile nicht gefunden:

Code: Alles auswählen

For S=2 To Spa*6-2 Step 2
Dasselbe mit Sp in

Code: Alles auswählen

CopyImage(0, Sp*4)
Da der Fehler nur auftritt, wenn dem Variablennamen ein * (Multiplikationsoperator) folgt, bei ’Spa/4’ (Division) aber alles glatt läuft, liegt die Vermutung nahe, daß das irgendetwas mit der Funktion von * als Zeigerkennzeichner zu tun hat und es deshalb als zum Namen gehörig betrachtet wird. Leider eben auch in den Fällen, wenn es sich gar nicht um einen Zeiger handelt, sondern das * einfach nur Operator ist. Man wundert sich dann, warum nach dem Ersetzen plötzlich nichts mehr funktioniert, obwohl man doch am eigentlichen Kode gar nichts verändert hat.

Der beschriebene Fehler trat in der Version 5.62 auf und so auch in der neuen 5.71. Nach Möglichkeit keine Ratschläge wie: 'Wieso setźt Du keine Leerzeichen zwischen Faktoren?', denn jeder Programmierer hat seine bei eingewurzelten Gewohnheiten.
Windows 7 x64; geposteter Kode bezieht sich (sofern nicht anders angegeben) immer auf das aktuellste PureBasic 64-Bit

Erst wenn man es seiner Schwiegermutter erklären kann, hat man es verstanden.
As gsündeste is oiwei guad essn und dringa und ned grang wern.
Nino
Beiträge: 1251
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

Beitrag von Nino »

Tanaghra hat geschrieben:ich wollte mal fragen, ob folgender Fehler auch bei Euch auftritt und ich ihn ggf. im englischen Forum posten soll.
Das Problem ist seit langem bekannt, und im engl. Forum schon öfter diskutiert worden.
Tanaghra hat geschrieben:liegt die Vermutung nahe, daß das irgendetwas mit der Funktion von * als Zeigerkennzeichner zu tun hat und es deshalb als zum Namen gehörig betrachtet wird.
Ja, das ist der Grund. Denn manchmal gehört ein * tatsächlich zum darauf folgenden Variablennamen. Der Editor kann leider nicht unterscheiden, ob ein * der Beginn einer Zeigervariablen oder der Multiplikationsoperator ist.
Tanaghra hat geschrieben:Nach Möglichkeit keine Ratschläge wie: 'Wieso setźt Du keine Leerzeichen zwischen Faktoren?'
Einen anderen Rat wird man dir leider kaum geben können.
H.Brill
Beiträge: 275
Registriert: 15.10.2004 17:42

Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

Beitrag von H.Brill »

Ich habe mir schon seit Ewigkeiten angewöhnt, Variablen, Operatoren usw.
mit einem Blank zu trennen.

Code: Alles auswählen

For S = 2 To Spa * (6 - 2) Step 2
Dient auch zur besseren Lesbarkeit. Man sieht dann
auf den ersten Blick, ob es ein Zeiger oder Operator ist :

Code: Alles auswählen

*var vs. * var
PB 5.60
Tanaghra
Beiträge: 28
Registriert: 13.05.2017 01:44

Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

Beitrag von Tanaghra »

@ Nino: Du schreibst:
Das Problem ist seit langem bekannt, und im engl. Forum schon öfter diskutiert worden.
Ich habe im englischen Forum in der 'Search query' im Feld 'Search for keywords' sowohl 'Find Replace *' als auch 'Find Replace multiplication' eingegeben. Es wurden aber keine Ergebnisse angezeigt, die mein Problem besprechen.

Könntest Du mir einen Link schicken zu einem entsprechenden Thread?
Windows 7 x64; geposteter Kode bezieht sich (sofern nicht anders angegeben) immer auf das aktuellste PureBasic 64-Bit

Erst wenn man es seiner Schwiegermutter erklären kann, hat man es verstanden.
As gsündeste is oiwei guad essn und dringa und ned grang wern.
Nino
Beiträge: 1251
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

Beitrag von Nino »

Tanaghra hat geschrieben:Könntest Du mir einen Link schicken zu einem entsprechenden Thread?
Z.B. dieser Thread:
https://www.purebasic.fr/english/viewto ... =4&t=43010

Habe jetzt ehrlich gesagt keine Lust, nach den anderen Threads zu suchen, in denen dieses Problem diskutiert wurde. :-)
Antworten