Seite 1 von 1

Suche Procedure.l Suchetext(gadget.l,zeile.l)

Verfasst: 03.01.2005 23:51
von Hroudtwolf
Hallo Leute,

Ich suche dringend eine Prozedur die in einem Editorgadget die Position eines Textes
ermitteln kann.
Nach wochenlangem experimentieren bin ich dem Problemm müde geworden. :shock:
Bitte helft mir ...........(fleh)

Code: Alles auswählen

Procedure.l SucheText (gadget.l,zeile.l)

Wer mir eine vernünftige (schnelle) Prozedur schreibt kann auf eine namentliche Erwähnung in meinem neuen Freeware _ _ _ _ _ _ _ _ wetten.

Verfasst: 04.01.2005 00:23
von NicTheQuick
Reicht es dir nicht den Text mit [c]GetGadgetText()[/c] aus dem EditorGadget zu nehmen, dann mit [c]FindString()[/c] den Text zu suchen und die Position auszugeben?

Und wozu ist der Parameter [c]zeile.l[/c] in deiner Procedure gedacht? Sollte da nicht eher sowas wie [c]SuchString.s[/c] oder so hin?

Verfasst: 04.01.2005 00:25
von bluejoke
hast du ein Problem mit der Zeilenangabe oder irgendwas anderem?

Code: Alles auswählen

; nur mal Entwurf, nicht lauffähig
Procedure.l SucheText(stringtofind.s, gadget.l, zeile)
  pos0 = 0
  Text.s = GetGadgetText(gadget)
  
  For i=1 To zeile
  pos0 = FindString(Text, Chr(13)+Chr(10), pos0) + 2
  Next

  ProcedureReturn FindString(Text, stringtofind, pos0)

EndProcedure

also: nur Entwurf, habs mangels Testumgebung nicht testen können, aber eigtl. doch versucht, lauffähig zu schreiben.

Außerdem hab ich noch einen Parameter eingefügt, nach was gesucht werden soll.


In der Schleife wird zunächst immer wieder (je nach Anzahl der angegebenen Zeilen - bei 0 nicht) nach einem Zeilenumbruch gesucht.
Vom letzten Fundort aus wird dann nach dem string gesucht.
Falls nur in der angegebenen Zeile gesucht werden soll muss noch eine Abfrage rein, in der nach einem Zeilenumbruch zwischen pos0 und Fundort gesucht wird:

Code: Alles auswählen

Procedure.l SucheText(stringtofind.s, gadget.l, zeile)
  pos0 = 0
  Text.s = GetGadgetText(gadget)
  
  For i=1 To zeile
  pos0 = FindString(Text, Chr(13)+Chr(10), pos0) + 2
  Next

  Position = FindString(Text, stringtofind, pos0)
  If FindString(Mid(Text, pos0, Position-pos0), Chr(13)+Chr(10), 0)=0
    Return Position
  EndIf

EndProcedure
Hoffe, das hat geholfen.

EDIT: jetzt hat Nic geposted, während ich am code gearbeitet hab... Ich hoffe mal ich hab dich richtig verstanden

Vielen Dank

Verfasst: 04.01.2005 03:23
von Hroudtwolf
@BlueJoke

Vielen Dank.

Ich probiers gleich mal aus.(wird bestimmt gehen)

Wenns klappt dann stehst du bald in den Credits eines meiner Langzeitprojekte.
Welches bald auf meiner Homepage vorgestellt wird.

Verfasst: 04.01.2005 03:29
von glubschi90
Aha. Und was ist das für ein Prog? :)

*neugierausmirrausspring* :mrgreen:

Verfasst: 04.01.2005 03:34
von Hroudtwolf
@glubschi90

glubschi90 hat geschrieben:Aha. Und was ist das für ein Prog? :)

*neugierausmirrausspring* :mrgreen:

Bevor mir jemand meinen Auftritt vermiesen kann werde ich noch alles über mein
Projekt geheimhalten.
Nur soviel.... Es wird unter Windows 98/XP/2000/ME/NT , auf einem PC laufen. Mit der Maus und der Tastatur bedienbar sein. Und sich in einem Fesnter befinden.

Spass beiseite.............Es WIRD einige interessieren ! ;-)

Verfasst: 04.01.2005 03:45
von glubschi90
Boah!
Tastatursteuerung!
WOW!
Mausunterstützung!
GEIL!
In einem FENSTER!!!!!

Das muss wirklich ein geniales Programm sein!!!!

( :wink: )

Naja... ist auch besser, wenn man alles bis zum release geheimhält!
Hast schon recht! :)
Ich mach's nämlich genauso! <)

Verfasst: 04.01.2005 12:08
von bluejoke
Ich halt das meiste auch geheim (naja, im Chat hab ich Hilfe gebraucht, und etwas erzählt, aber lang nicht alles)
In dem program muss ich ein paar Daten parsen, deshalb hab ich mich schon etwas länger mit verschiedenen Suchkombinationen beschäftigt...