amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > word wrap [ - Suche - Neue Beiträge - Registrieren - Login - ]

1 -2- 3 [ - Beitrag schreiben - ]

12.11.2009, 13:24 Uhr

AGSzabo
Posts: 1663
Nutzer
@akl:

ich versteh nicht. soll ich bei der ausgabe die zeichen duchzählen? gerade das wollte ich doch vermeiden. aber ich weis nicht wirklich was eine hashtable ist...

veileicht sollte man jeder zeile ein längenbyte vorrausmachen aber das kommt mir doof vor...

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 13:37 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 13:40 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von akl:
@AGSzabo:
Wir wär's mit einem Hash"table", der Dir für einen gegebenen Zeichenindex die Formatierung liefert (oder keine)...

Ist in diesem Fall eigentlich nicht nötig, weil der Word-Wrap Algorithmus ja linear über die Zeichen iteriert. Das heißt, es gibt immer einen aktuellen Eintrag in der Tabelle, der mit der aktuellen Zeichenposition korrespondiert, und für das nächste Zeichen ist entweder derselbe Eintrag oder der direkt folgende zuständig.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 13:43 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
wobei zahl der zeichen in der nächsten zeile weiter gehen kann, denn was eine zeile ist, wird erst nach der filterung des strings berechnet. das ist aber unpraktisch weil man dann bei der ausgabe trotz dass man eine zahl_der_zeichen hat, nochmal bis zum ende der zeile suchen muss...

Jetzt machst Du ja ein ganz anderes Fass auf. Bislang musste Deine Ausgaberoutine doch auch das Ende der Zeile suchen, und es hat Dich nicht gestört.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 14:01 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> aktuellen Eintrag in der Tabelle, der mit der aktuellen Zeichenposition korrespondier

versteh ich nicht.



> Jetzt machst Du ja ein ganz anderes Fass auf.

ich dachte das geht vielleicht doch.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 14:35 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
@Holger:
> aktuellen Eintrag in der Tabelle, der mit der aktuellen Zeichenposition korrespondier

versteh ich nicht.

Text wird üblicherweise mit dem ersten Zeichen beginnend, ein Zeichen nach dem anderen gespeichert. Wenn Du jetzt den Text in dieser Reihenfolge abwanderst und Einträge in einer Tabelle ablegst, sind diese in der gleichen Reihenfolge gespeichert.
Wenn Du jetzt erneut die Zeichen abwanderst, natürlich wieder in dieser Reihenfolge, und die Einträge aus der Tabelle brauchst, gehört der erste Eintrag aus der Tabelle zum ersten Zeichen. Für jedes weitere Zeichen ist entweder der gleiche Tabelleneintrag wie für das vorherige oder der nächste Eintrag zuständig. Du iterierst also gleichzeitig über die Zeichen und Tabelleneinträge und muss somit nie in der Tabelle suchen.
Zitat:
> Jetzt machst Du ja ein ganz anderes Fass auf.

ich dachte das geht vielleicht doch.

Dann kannst Du gleich eine Tabelle anlegen, in der die Zeilen gespeichert sind. Wo ist das Problem?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 14:50 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

eh, aha.

jetzt habe ich deine warp-routien in assembler implementiert, allerdings mit fehler: es wird anscheinend immer erst ein wort über die bande hinaus umgebrochen oder so. wer siehst den fehler?

code:
while( ( word:=next() ) )
    SpaceLeft := LineWidth - Width(word)
    while( ( word:=next() ) AND char<>$a AND Width(word)+SpaceWidth<SpaceLeft)
      SpaceLeft := SpaceLeft - (Width(word)+SpaceWidth)
    end while
    insert line break
end while

ASM
		; calc and store width of space

		lea	.space(pc),a0
		moveq	#1,d0
		move.l	a2,a1
		jsr	_LVOTextLength(a6)
		move.w	d0,d7		; width of 1 space char

		; get field width

		move.w	xuiFd_width(a3),d6
		move.l	xuiFd_wrappedtext(a3),a5

		tst.b	(a5)
		beq.b	.rts

.while_words	bsr	.get_word
		beq.b	.end

		; SpaceLeft := LineWidth - Width(word)

		move.w	d6,d5
		sub.w	d0,d5

.while_misc	; while( ( word:=next() ) AND char<>$a AND Width(word)+SpaceWidth<SpaceLeft)

		bsr	.get_word
		beq.b	.line_break

		cmp.b	#$a,-1(a5)
		beq.b	.while_words

		move.w	d0,d1
		add.w	d7,d1
		cmp.w	d1,d5
		ble.b	.line_break	

		; SpaceLeft := SpaceLeft - (Width(word)+SpaceWidth)

		sub.w	d0,d5
		sub.w	d7,d5

		bra.b	.while_misc

.line_break	move.b	#$a,-1(a5)
		bra.b	.while_words

.end		clr.b	-1(a5)
.rts		rts

.get_word	; a5 *word, >a5 *after word

		move.l	a5,a0		; word pointer
		moveq	#0,d0		; word lenght in chars
.gw_loop	tst.b	(a5)
		beq.b	.nomore
		cmp.b	#" ",(a5)
		beq.b	.textlength
		cmp.b	#$a,(a5)
		beq.b	.textlength
		addq	#1,d0
		addq	#1,a5
		bra.b	.gw_loop

.textlength	addq	#1,a5
		move.l	a2,a1
		jsr	_LVOTextLength(a6)
		moveq	#1,d1
		rts

.nomore		addq	#1,a5
		moveq	#0,d1
		rts

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 15:24 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 16:01 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 14:51 Uhr

akl
Posts: 265
Nutzer
@AGSzabo:
Entweder trennst Du die Formatierungs- von den Textinformationen, oder nicht.
Entweder gibst Du (immer) zeichenweise aus, oder nicht.
Entweder gibst Du (immer) zeilenweise aus, oder nicht.
Entweder funktioniert die Ermittlung der Formatierung unabhängig vom Zeilenumbruch, oder nicht.
Entweder kannst Du zu jedem Zeitpunkt die Formatierung jedes Textschnipsels ermitteln, ohne den ganzen Text(fluss) durchgehen zu müssen, oder nicht.
Entweder steckt auch Intelligenz in der Textausgabe-Routine, oder nicht.
Entweder hast Du Speicher genug, oder Du musst sparen :-)

Die beste Lösung hängt von Deinen genauen Anforderungen ab.

Das mit dem Hashtable war nur eine Anregung für den Fall, dass Du die Formatierung komplett von der reinen Textinformation trennen möchtest.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 14:52 Uhr

akl
Posts: 265
Nutzer
@Holger:

>Ist in diesem Fall eigentlich nicht nötig, weil der Word-Wrap
>Algorithmus ja linear über die Zeichen iteriert.

Bist Du sicher, dass Anforderungen und Algorithmus schon final sind? :-)

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 16:01 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von akl:
Bist Du sicher, dass Anforderungen und Algorithmus schon final sind? :-)

Nein, aber ich würde erst dann eine Hash-Tabelle implementieren, wenn ich eine brauche. ;)

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 16:09 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
jetzt habe ich deine warp-routien in assembler implementiert, allerdings mit fehler: es wird anscheinend immer erst ein wort über die bande hinaus umgebrochen oder so. wer siehst den fehler?

Na das ist ja einfach. Wenn ein Wort nicht mehr in die Zeile passt, musst Du den Umbruch vor dem Wort setzen und nicht dahinter.

Im übrigen
code:
...
		move.w	d0,d1
		add.w	d7,d1
		cmp.w	d1,d5
		ble.b	.line_break	

		; SpaceLeft := SpaceLeft - (Width(word)+SpaceWidth)

		sub.w	d0,d5
		sub.w	d7,d5

		bra.b	.while_misc

.line_break


Das geht deutlich einfacher. Kommst Du drauf? :P


Hint: nach .line_break wird der Inhalt von d5 nicht mehr benutzt...

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 16:28 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von akl:
Das mit dem Hashtable war nur eine Anregung für den Fall, dass Du die Formatierung komplett von der reinen Textinformation trennen möchtest.

Ich würde den Text und die Formatierung trennen. Den Text würde ich gar nicht kopieren, sondern eine Tabelle, bzw. einen (relativ flachen) Baum aufbauen, der die Zeilen und Style-Spans im Ursprungstext adressiert.

Hash-Lookup halt ich für nicht so nützlich, weil ja jede mögliche Textposition ein potentieller Key wäre. Mit Binärer Suche oder Interpolationssuche ist man da besser dran. Sofern man nicht sowieso iterieren muss.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 16:45 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> Wenn ein Wort nicht mehr in die Zeile passt, musst Du den Umbruch vor dem Wort setzen und nicht dahinter.

das allein scheint es nicht zu sein. außerdem wenn ich das so mache, würde wenn schon das erste wort nicht passt, ein returncode oder null vor der ersten byte des textes geschrieben.

> Das geht deutlich einfacher. Kommst Du drauf?

hm, nö. habs versucht. aber irgendwie fühlt sich das so an als ginge es wirklich einfacher.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 16:46 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:08 Uhr

AGSzabo
Posts: 1663
Nutzer
Zitat:
Original von Holger:

... einen (relativ flachen) Baum aufbauen, der die Zeilen und Style-Spans im Ursprungstext adressiert .... Hash-Lookup .... potentieller Key wäre ....Mit Binärer Suche oder Interpolationssuche ... iterieren


also das ist echt zu hoch für mich.


[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 17:09 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:11 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
das allein scheint es nicht zu sein. außerdem wenn ich das so mache, würde wenn schon das erste wort nicht passt, ein returncode oder null vor der ersten byte des textes geschrieben.

Kann überhaupt nicht sein. Ob das erste Wort in die Zeile passt, wird überhaupt nicht überprüft.
Nur noch mal zum Verständnis
code:
.line_break	move.b	#$a,-1(a5)

schreibt hinter das aktuelle Wort, denn a5 zeigt bereits auf das nächste Wort. Was natürlich falsch ist, wenn das aktuelle Wort nicht in die Zeile passt. Wobei das aktuelle Wort an dieser Codestelle niemals das erste Wort einer Zeile ist, das ist schon von vornherein sichergestellt.
Zitat:
hm, nö. habs versucht. aber irgendwie fühlt sich das so an als ginge es wirklich einfacher.
Versuch's noch mal. Was macht cmp genau, und wo liegt der Unterschied zu sub?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:19 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
also das ist echt zu hoch für mich.

Iteration (Das ist nicht wirklich schwer ;) )
Binäre Suche (Schon anspruchsvoller, aber auch nicht schwer)
Jetzt hast Du Dich warm gemacht, also:
Hashtabelle

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:21 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:


code:
sub.w	d7,d5
		sub.w	d0,d5
		bgt.b	.while_misc

.line_break


> schreibt hinter das aktuelle Wort, denn a5 zeigt bereits auf das nächste Wort. Was natürlich falsch ist, wenn das aktuelle Wort nicht in die Zeile passt.

das ist schon irgendwie klar aber nachdem ich mir den anfang des wortes merke und davor ein $a einfüge, kommt alles erst recht durcheinander.


[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 17:22 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:33 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
das ist schon irgendwie klar aber nachdem ich mir den anfang des wortes merke und davor ein $a einfüge, kommt alles erst recht durcheinander.

Dann hast Du beim Merken des Wortanfangs etwas falsch gemacht.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:34 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

iteration: jedes byte der reihe nach mit $a zB vergleichen?

binäre suche: byte in der mitte vegleichen, dann wieder die mitte der mitte nehmen entweder links oder rechts? hm, kann nicht sein weil da müssten alle linken werte zb kleiner und alle rechten werte dann gößer sein?

hashtable: ich habe in der liste der klassen von OX sagen wir mal 10 interne klassen eingetragen, jede interne klasse hat eine unique ID. ich könnte nun durch die liste "iterieren" und jedes element seine ID vergleichen. weil das langsam ist, habe ich aber eine tabelle in der man, wenn man die ID-nummer mal 4 nimmt, damit als offset den zeiger auf die zugehörige klasse bekommt.

soweit so schön aber ich peil noch nicht wie das im kontext der textformatierung aussieht.


ps: stimmt meine optimierung in deinem sinne?

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 17:36 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:39 Uhr

Holger
Posts: 8116
Nutzer
@AGSzabo:
Für die Suche innerhalb des Textes sind diese Verfahren nicht geeignet. Darum ging es ja auch nicht. Ausgangspunkt war, dass akl einen Vorschlag gemacht hat, wie man für eine bestimmte Textposition die in einer Tabelle stehende Formatierung finden kann.

Das ist aber erst dann wichtig, wenn Du Dich entschieden hast, ob Du eine solche Tabelle verwenden willst, und wie diese aussehen soll.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:43 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
ps: stimmt meine optimierung in deinem sinne?

Sofern gt die Umkehrung von le ist, ja. Ich kann mir das immer nicht merken.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:46 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

>Sofern gt die Umkehrung von le ist, ja. Ich kann mir das immer nicht merken.

le ist "Less or Equal" und gt ist "GreaTer".
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:48 Uhr

Holger
Posts: 8116
Nutzer
@AGSzabo:
Die .getword Subroutine solltest Du auch noch mal vereinfachen.
Einfach am Anfang move.b (a5)+,d1 statt tst.b (a5) schreiben und nachfolgend (a5) durch d1 ersetzen. Dann kannst Du Dir die drei addq #1,a5 Anweisungen sparen und hast weniger Speicherzugriffe.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:52 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
le ist "Less or Equal" und gt ist "GreaTer".

Das weiß ich.
Nur die Logik, nach der der Unterschied zwischen HIgher und GreaTer die Verwendung eines Vorzeichens bestimmt, prägt sich mir halt nicht ein.
Ist das jetzt vorzeichenbehaftet oder nicht?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 17:57 Uhr

AGSzabo
Posts: 1663
Nutzer
tut mir leid, ich finde den fehler nicht. im folgenden habe ich versucht die linebraks auf 1 vor anfang des wortes umzuleiten...

code:
.while_words	bsr	.get_word
		beq.b	.end

		; SpaceLeft := LineWidth - Width(word)

		move.w	d6,d5
		sub.w	d0,d5

.while_misc	; while( ( word:=next() ) AND char<>$a AND Width(word)+SpaceWidth<SpaceLeft)

		bsr	.get_word
		beq.b	.line_break

		cmp.b	#$a,-1(a5)
		beq.b	.while_words

		sub.w	d7,d5
		sub.w	d0,d5
		bgt.b	.while_misc

.line_break	move.b	#$a,(a4)
		bra.b	.while_words

.end		clr.b	-1(a5)
.rts		rts

.get_word	; a5 *word, >a5 *after word

		lea	-1(a5),a4
		move.l	a5,a0		; word pointer
		moveq	#0,d0		; word lenght in chars
		tst.b	(a5)
		beq.b	.nomore
.gw_loop	tst.b	(a5)
		beq.b	.textlength
		cmp.b	#" ",(a5)
		beq.b	.textlength
		cmp.b	#$a,(a5)
		beq.b	.textlength
		addq	#1,d0
		addq	#1,a5
		bra.b	.gw_loop

.textlength	addq	#1,a5
		move.l	a2,a1
		jsr	_LVOTextLength(a6)
		moveq	#1,d1
		rts

.nomore		addq	#1,a5
		moveq	#0,d1
		rts

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 18:04 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 18:08 Uhr

AGSzabo
Posts: 1663
Nutzer
Zitat:
Original von Holger:
wie man für eine bestimmte Textposition die in einer Tabelle stehende Formatierung finden kann.

Ich habe keine Ahnung.


--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 18:14 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

> nach der der Unterschied zwischen HIgher und GreaTer die Verwendung eines Vorzeichens bestimmt

das vorzeichen (N-flag) kommt in der Higher formel NICHT vor.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110

[ - Antworten - Zitieren - Direktlink - ]

12.11.2009, 21:28 Uhr

AGSzabo
Posts: 1663
Nutzer
so, die funktion ist nun optimiert und besser, aber den haken wegen dem überhang der worte am rechten rand den sehe ich eifach nicht. mir is nur aufgefallen dass nur die erste zeile korrekt umgebrochen wird.
code:
start		move.w	xuiFd_width(a3),d6

		move.l	xuiFd_wrappedtext(a3),a5

		tst.b	(a5)
		bne.b	.get_first

.rts		rts

.while_words	tst.b	-1(a5)
		beq.b	.rts

.get_first	bsr	.get_word	; first of a line

		; SpaceLeft := LineWidth - Width(word)

		move.w	d6,d5
		sub.w	d0,d5

.while_misc	; while( ( word:=next() ) AND char<>$a AND Width(word)+SpaceWidth<SpaceLeft)

		tst.b	-1(a5)
		beq.b	.rts

		move.l	a5,a4
		bsr	.get_word

		cmp.b	#$a,(a5)
		beq.b	.while_words

		sub.w	d7,d5
		sub.w	d0,d5
		bgt.b	.while_misc

.line_break	move.b	#$a,-1(a4)
		bra.b	.while_words

.get_word	; a5 *word, >a5 *after word

		move.l	a5,a0		; word pointer
		moveq	#0,d0		; word lenght in chars
.gw_loop	move.b	(a5)+,d1
		beq.b	.textlength
		cmp.b	#$a,d1
		beq.b	.textlength
		cmp.b	#" ",d1
		beq.b	.textlength
		addq	#1,d0
		bra.b	.gw_loop

.textlength	move.l	a2,a1
		jmp	_LVOTextLength(a6)

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 12.11.2009 um 22:05 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

13.11.2009, 09:57 Uhr

DrNOP
Posts: 4118
Nutzer
Ich geb' dann auch mal meinen Senf dazu:
Zitat:
Original von AGSzabo:
beim duschen ist mir ein argument eingefallen, nämlich das man bei der teilweisen umsetzung eines problems schießlich näher sich damit auseinandersetzt und somit auch näher zur gesamtlösung ist, wenn das ganze problem zu unüberschaubar ist.

Du meinst du erkennst erst was du willst, wenn du dabei bist es zu bekommen?

Wenn das gesamte Problem zu unüberschaubar ist, ist es eine gute Idee den Teil des Problems aufzuschreiben, den man meint erfaßt zu haben. Allerdings ist es nicht die einzige (und auch nicht die beste) Möglichkeit, diesen Teil sofort als Code niederzuschreiben. Es könnten sich noch Änderungen ergeben...
--
Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker

[ - Antworten - Zitieren - Direktlink - ]

13.11.2009, 10:21 Uhr

AGSzabo
Posts: 1663
Nutzer
@DrNOP:

> Du meinst du erkennst erst was du willst, wenn du dabei bist es zu bekommen?

eh, ja genau. in diesem fall schon. auch wenns keiner glaubt, asmcode ist für mich übersichtlicher als c und pseudocode müsste ich mir erst ausdenken.

> Wenn das gesamte Problem zu unüberschaubar ist, ist es eine gute Idee den Teil des Problems aufzuschreiben

ist schon vorgekommen dass ich es so gemacht habe.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

13.11.2009, 13:18 Uhr

DrNOP
Posts: 4118
Nutzer
Zitat:
Original von AGSzabo:
auch wenns keiner glaubt, asmcode ist für mich übersichtlicher als c und pseudocode müsste ich mir erst ausdenken.

Ich habe nirgends von ASM, C oder Pseudocode gesprochen.

Wie wäre es, wenn du ein Stück Prosa verfaßt:
"Ich will ein Stück Software, das folgendes tut:
  • ...
  • ...
  • ...

Dagegen soll sie folgendes nicht tun:
  • ...
  • ...
  • ...

Und die folgenden Situationen können aus den jeweils angegebenen Gründen nicht auftauchen:
  • ...
  • ...
  • ...


--
Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker

[ - Antworten - Zitieren - Direktlink - ]


1 -2- 3 [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > word wrap [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.