Rekursives Suchen und Löschen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Rekursives Suchen und Löschen

Beitrag von Toxitom »

Hey M_goes_OOo,

hmm, einfacher wäre es, du postest deinen vorhandenen Code - da könnte man dir direkte Tipps geben.

Natürlich kannst du die Suche auch auf mehrere Elemete direkt anwenden - wobei es fraglich ist, ob nicht der wiederholte Schleifendurchlauf effektiver wäre.
Aber egal:
Wenn du eine Zeile läschst (ich denke, du meinst auch "Zeilen"), so hast du ja vorher eine Abfragebedingung. Die kannst du jederzeit durch "AND" oder "OR" erweitern, also in der Form:

Code: Alles auswählen

sInhalt = oZelle.string
if (sInhalt = "Müller") OR (sInhalt = "Meier") OR (sInhalt = "Fischer") then
  'Lösche Zeile
Ich würde aber dennoch nur eine Routine und Parameter abfragen, dafür dann alle Suchkriterein in einen Array packen und den Array nacheinander abarbeiten...
Zum zweiten Thema:
Da gibt es viele Varainten - die einfachste in Basic mit "inStr()":

Code: Alles auswählen

if inStr(sInhalt, "müller", 1) then
  REM Zeile löschen
Instr() liefert die Position im String, ab der der Suchstring beginnt. Liefert "0" (Null), wenn der Suchstring nicht enthalten ist. Die 1 als Parameter verwendet eine reine Textsuche - ohne berücksichtigung von Groß- und Kleinschreibung.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
M_goes_OOo
Beiträge: 4
Registriert: Di, 13.11.2007 20:38

Re: Rekursives Suchen und Löschen

Beitrag von M_goes_OOo »

Hallo Thomas,

danke für die Antwort. Die Adressliste war nur ein Beispiel. Konkret geht's um Tabellen, in denen mehrere Hundert Musiktitel inklusive Angabe des Trägermediums (CD, CD-Maxi, LP bis hin zur MusiCassette) stehen. Insgesamt maximal 39 verschiedene Tonträgerarten. Ich brauche von denen aber nur maximal fünf.

Mein Code zum Löschen <b>eines</b> Datenträgers:

Code: Alles auswählen

For n = letzte_Zeile -1 to 0 step -1
oInhalt = oSheet.getCellByPosition(4,n).string
	if oInhalt = "SACD" then 
		oSheet.getRows().removeByIndex(n, 1)
	end if
Next
Diesen Code 34-mal nacheinander durchhecheln zu lassen, erscheint mir wenig performant , ebenso 34 OR-Verknüpfungen zu machen. :shock:

Das mit dem Array hört sich gut an. Werde mich mal auf die Suche machen.

Gruß,
Marcus
ush189
*
Beiträge: 12
Registriert: Mi, 12.09.2007 14:48

Re: Rekursives Suchen und Löschen

Beitrag von ush189 »

Statt 34 Verknüpfungen mit dem IF könntest du auch 5 Verknüpfungen mit IF NOT machen.
M_goes_OOo
Beiträge: 4
Registriert: Di, 13.11.2007 20:38

Re: Rekursives Suchen und Löschen

Beitrag von M_goes_OOo »

:lol: Manchmal sieht man den Wald vor lauter Bäumen nicht ... :lol:
Antworten