PureBoard
http://forums.purebasic.com/german/

Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richtig
http://forums.purebasic.com/german/viewtopic.php?f=20&t=31624
Seite 1 von 1

Autor:  Tanaghra [ 21.08.2019 03:37 ]
Betreff des Beitrags:  Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richtig

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:
For S=2 To Spa*6-2 Step 2

Dasselbe mit Sp in
Code:
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.

Autor:  Nino [ 21.08.2019 06:30 ]
Betreff des Beitrags:  Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

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.

Autor:  H.Brill [ 21.08.2019 07:12 ]
Betreff des Beitrags:  Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

Ich habe mir schon seit Ewigkeiten angewöhnt, Variablen, Operatoren usw.
mit einem Blank zu trennen.
Code:
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:
*var vs. * var

Autor:  Tanaghra [ 22.08.2019 19:26 ]
Betreff des Beitrags:  Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

@ Nino: Du schreibst:
Zitat:
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?

Autor:  Nino [ 22.08.2019 19:46 ]
Betreff des Beitrags:  Re: Ersetzen mit ’Nur ganze Wörter’ funktioniert nicht richt

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. :-)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/