nur ungerade Zeilen ansprechen

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

nur ungerade Zeilen ansprechen

Beitrag von clag »

Hallo Leutz,

ich möchte in einer Tabelle in einem Bereich zB die ersten 100 Zeilen nur für die geraden oder ungeraden Zeilen die Zeilenhöhe einstellen
wie würde man das am sinnigsten machen ?

kann man "ungerade" irgendwie direkt auswerten,

oder muss da eine Schleife her mit 1+2, oder was könnte man da noch anstellen ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: nur ungerade Zeilen ansprechen

Beitrag von sven-my »

Hallo clag,

das einfachste gerade von ungeraden Zahlen zu unterscheiden ist, ob die GANZZAHL von ( a/2) <> a/2 ist.

Beispiel:
5 / 2 = 2.5
GaNZZAHL(5/2) = 2

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: nur ungerade Zeilen ansprechen

Beitrag von turtle47 »

Hi Clag,
clag hat geschrieben:kann man "ungerade" irgendwie direkt auswerten,
Meines Wissens nicht.
clag hat geschrieben: oder muss da eine Schleife her mit 1+2, oder was könnte man da noch anstellen ?
Man könnte auch

Code: Alles auswählen

for i = StartRow to cRows  Step 2
verwenden.

Bei 100 Zeilen dauert das auf meinem Läppi gerade mal 32 Millisekunden. :lol:

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: nur ungerade Zeilen ansprechen

Beitrag von clag »

Hallo sven-my,

danke für den Hinweis
aber genau das möchte ich möglichts ,vermeiden jede Zeile einzeln finden und ansprechen

ich dachte an so etwas

thiscomponent.Sheets(0).getcellrangebyposition(0,1,0,2001).getrows().ungerade.Height = 10


oder so !?


edit:
da war ja zwischendurch der turtle47 mit einem Vorschlag, ok bei 32 mSek werde ich mal testen wie das hier so läuft .....
du hast aber nen schnellen Daumen . . ;)
Zuletzt geändert von clag am Sa, 21.08.2010 22:03, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: nur ungerade Zeilen ansprechen

Beitrag von sven-my »

Hallo clag,

mein Vorschlag in BASIC:

if mod(Zahl / 2) <> Zahl / 2 then "ungerade"

gruß
sven-my

Gerade kommt mir Dein neuer Beitrag dazwischen - da bin ich überfragt.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: nur ungerade Zeilen ansprechen

Beitrag von clag »

Hi,

da werde ich natürlich probieren wass wie läuft :)

Danke !
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: nur ungerade Zeilen ansprechen

Beitrag von Karolus »

Hallo
if mod(Zahl / 2) <> Zahl / 2 then "ungerade"
Das wird so nicht laufen, Die Basicsyntax für mod lautet:

Code: Alles auswählen

if zahl mod 2  then   'ungerade
und die extra Prüfung auf ...<> zahl/2 ist ja nun völliger Quatsch - die Bedingung (Zahl mod 2) <> (zahl / 2) trifft bei allen Zahlen zu.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: nur ungerade Zeilen ansprechen

Beitrag von sven-my »

Hallo Karolus,

habe ich das mit >mod< falsch verstanden, oder ist es doch das Äquivalent zu GANZZAHL ?

Da zitierst Du mich falsch :
Karolus hat geschrieben:die Bedingung (Zahl mod 2) <> (zahl / 2)
OK, ich häte besser geschrieben

Code: Alles auswählen

if x/2 <> mod(x/2) then .......
rem x ist die zu prüfende Zahl
"Zahl" soll sie Zahl sein, die geprüft wird. Und es ist doch ein Unterschied, ob ich

Ganzzahl(5/2) , oder 5/2 errechnen lasse, bei einer geraden Zahl ergibt es keinen Unterschied.

Michael (http://www.starbasicfaq.de/WelcheRuntim ... ml)schrieb
Mathematische Operatoren
.....
Mod
Liefert den ganzzahligen Rest einer Division.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: nur ungerade Zeilen ansprechen

Beitrag von sven-my »

Hallo Karolus,

Asche auf mein Haupt --- habe da was falsch verstanden :
Dank Michael hab auch ich es jetzt begriffen !

>mod< ist nicht die Entsprechung zu Ganzzahl, sondern rundet die Stellen nach dem Komma einer Division auf.

müßte dann also so gehen:

Code: Alles auswählen

y= x mod2
if  y = 0 then msgbox "gerade"

'oder
if y=1 then msgbox "[color=#FF0000]un[/color]gerade"
gruß
sven-my

Nachtrag:

die Entsprechung zu >Ganzzahl< ist >fix<

würde somit richtig lauten:

Code: Alles auswählen

if 5/2 <> fix(5/2) then msgbox "ungerade"
gruß
sven-my
Zuletzt geändert von sven-my am So, 22.08.2010 11:50, insgesamt 1-mal geändert.
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: nur ungerade Zeilen ansprechen

Beitrag von komma4 »

clag hat geschrieben:ich möchte in einer Tabelle in einem Bereich zB die ersten 100 Zeilen nur für die geraden oder ungeraden Zeilen die Zeilenhöhe einstellen
Meine Rede: Du liesst nicht. :roll:
Hättest Du Dir mal meine Makro-Seite angesehen, wäre Dir calc_colorRows doch aufgefallen, oder?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: nur ungerade Zeilen ansprechen

Beitrag von Karolus »

Hallo
@Sven
mod ist der modulo-Operator und liefert den Rest der beim ganzahligen dividieren übrig bleibt, z.B.: 11 mod 4 ergibt 3
( 4 passt 2 mal in 11 → 2 mal 4 gibt 8 bleibt ein Rest von 3 )

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: nur ungerade Zeilen ansprechen

Beitrag von sven-my »

Hallo karolus,

nun sehe ich klarer - von modulo habe ich vor Jahrzehten schon mal gehört.

Michaels Seite hat mich da auf den falschen Dampfer gebracht.

Danke Dir.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: nur ungerade Zeilen ansprechen

Beitrag von clag »

Hallo,

in der Zwischenzeit habe ich mir auch mal erlaubt in die Eingeweide von calc_colorRows zu sehen
da wendet Komma4 ja genau so diese Funktion an !

Dazu ich nun folgendes fragen/bemerken

wenn ich es richtig verstehe wird in jedem Durchgang auf gerade ungerade geprüft oder ?
ist das bei einer größeren Anzahl nicht unnötige Rechenarbeit ?

wäre es nicht erheblich schneller diese Prüfung nur einmal am Anfang vorzunehmen
und dann nur noch den Zähler um 2 zu variieren also +2 oder -2 je nach dem?
sonst einmal +1 und dann +2
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: nur ungerade Zeilen ansprechen

Beitrag von Karolus »

Hallo
Irgendwo in den unendlichen Weiten dieses Threads wurde doch schon mal die Variante der For-Schleife genannt:
for zahl = 1 to 99 step 2
...
next

Für was steht wohl dieses ominöse step 2 ?
(Komma4 hat Recht - mit Lesen hast du es nicht so .. ) 8)

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: nur ungerade Zeilen ansprechen

Beitrag von clag »

Hi

ja man wat iss'n nu, rin inne Katoppeln rut usse Kattopeln :lol:

nu lese ich in fremden Code nach und habe Fragen dazu und werde auch wieder angemacht

Code: Alles auswählen

for i = lStartRow to lEndRow
	' determine range
	actRange = actSheet.getCellRangeByPosition(lStartCol,i,lEndCol,i)
	' only every second row
	if  ((i MOD 2) = 0) then
		' even row number (zero considered even)
		actRange.setPropertyValue("CellBackColor", lOddColor)
	end if
next i
bzw kriege dann zu lesen ich würde nicht lesen :?

das mit step 2 hatte ich schon verstanden (glaube ich) :)
daraus resultiert ja diese Frage zu der von Komma4 verwendeten Schleife
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten