Power++ Problem (Find/Replace)

marx

Grünschnabel
Hallo zusammen,

hat jemand eine ahnung wie ich bei einem find/replace dialog
bei Sybase Power++ die funktion "nach oben" beim suchen aktivieren
kann?
hier das code snippet:
Code:
WBool Form1::Suchen_Ersetzen_Dialog_1_FindReplace(
    WObject *                   source,
    WFindReplaceEventData *     event )
{
    WLong                           position;
    WString                         suchtext;
    WRange                          zeichen_index;
    WLong                           text_laenge;
    WBool                           ganzwort;

    ganzwort = event->wholeWord;

    if (event->findNext)
    {
      suchtext = Suchen_Ersetzen_Dialog_1->GetFindText();
      if (event->searchDown)
      {
        position = Richtextfeld_1->FindText( suchtext, FALSE, ganzwort, beginAt );
        if (position < 0)
        {
          position = Richtextfeld_1->FindText(suchtext);
        }
        text_laenge = suchtext.GetLength();
        zeichen_index.start = position;
        zeichen_index.end = position + text_laenge;
        beginAt =  zeichen_index.end;

        Richtextfeld_1->SetFocus( );
        Richtextfeld_1->SetEditSelection( zeichen_index );
      }
      else

      {
       // HIER MÜSSTE JETZT DER CODE ZUM SUCHEN STEHEN
      }
    }
    return FALSE;
}

Vielen Dank im Vorrausd
 
Zuletzt bearbeitet von einem Moderator:
setz doch einfach den cursor auf den anfang und lass ihn nach unten suchen, dann brauchst du das nach oben suchen nicht.

oder brauchst du unbedingt die reihenfolge?

ps: bitte poste nächstes mal deinen quellcode in [kode][/kode] (c statt k) tags, dann funktioniert das auch mit den tabulatoren
 
eben, das ist das problem, ich mach 'n fernkurs
und hab das hier als beispielprogramm.

ich brauchs von unten nach oben, leider
beschäftigt sich mit Power++ fast niemand

trotzdem danke für die antwort
 
das problem is nur dass ich von power++ echt noch nie was gehört hab!

und mit
Code:
if (event->searchUp)
is da echt nix zu machen?

dann versuch mal einfach google zu schröpfen! (auch mal ohne power++ nachschlagen)

mehr kann ich leider nicht für dich tun fürs erste :(
 
Power++ Problem

Hi Marx,
hast du inzwischen eine Lösung für deine Suche "nach oben" gefunden.
Habe nähmlich ein ähnliches Problem...

Wäre dir für eine Antwort sehr dankbar!

Gruß
Dirk :)
 
Hi,

bei welcher Fernschule macht Ihr denn den Lehrgang? Ich vermute fast, dass ich den gleichen Lehrgang mache. Nachdem ich die halbe Nacht ueber der Aufgabe mit dem Rückwärtssuchen gesessen habe und ausser dieser Seite auch nichts zu dem Thema im Netz gefunden habe, habe ich nun doch noch die Lösung herausgefunden.
Wie die meisten gelösten Probleme kommt mir auch dieses im Nachhinein völlig simpel vor...
Ich habe die Anweisungen für die else-Schleife einfach von Hand geschrieben, Drag&Drop-Möglichkeiten scheint es dafür bei Power++ wohl echt nicht zu geben.

Ein paar einfache Überlegungen als Hilfe für Euch, einen Ansatz zu finden:
- die Methode FindText durchläuft den Text zwar immer vorwärts, aber wenn ich Grenzen für die Start- und Endposition setze, und diese stufenweise verringe, wird der Text rückwärts durchsucht
- wichtig ist es, den richtigen Anfangswert für die Endposition und die richtige Differenz zwischen Start- und Endposition herauszufinden

Wenn das als Hilfe noch nicht reicht, dann meldet Euch.

Gruss,
Thomas.
 
Hallo zusammen,

ich habe mich gestern mit demselben Problem herumgeschlagen und nach einiger Zeit eine Lösung gefunden, die wohl ähnlich der von Thomas ist:
Überprüfe mit FindText, ob die Zeichenkette (so lang wie der Suchbegriff) direkt vor dem Cursor der Suchbegriff ist. Wenn nicht, überprüfe, ob die Zeichenkette bis zum vorletzten Buchstaben vor dem Cursor der Suchbegriff ist, usw. Nach einem Treffer beginnt die Suche direkt vor dem ersten Buchstaben des gefundenen Begriffs.

Wenn die Suche am Anfang des Textes angekommen ist, bekommt die Variable, die die Position der Suche angibt, den Wert der Gesamtlänge des Textes.

Hat vielleicht jemand eine elegantere Lösung gefunden?
Sonst sind diese Einsendeaufgaben eher einfach, aber die hier war schon ein schwerer Brocken.

lg Fritz
 
Zurück