Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Text Zeilenweise ausgeben

Frage Entwicklung

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

05.06.2013 um 18:40 Uhr, 1432 Aufrufe, 4 Kommentare, 1 Danke

Hallo
Hänge gerade an einem kleineren größeren Problem

Und zwar versuche ich eine Textausgabe für einen beliebig langen String zu realisieren.
Dieser soll ab einem bestimmten Punkt einen Zeilenumbruch machen, sodass der Text nicht unendlich nach rechts läuft.
Habe es jetzt so gelöst, das es für die ersten 5 Zeilen funktionieren würde, wenn der Text aber länger als 5 Zeilen ist funktioniert es wider nicht, und ich müsste es für unendlich viele Zeilen umsetzen, was ja nicht möglich ist.

01.
			if (i>80 && i<100 && Text.equals(" ") && Zeile1){ 
02.
				oben.replaceText("\n", i-1, i-1); 
03.
				Zeile1 = false;
Diesen Aufbau habe ich für die ersten 5 Zeilen gewählt.
i ist die Lauf variable, die Position des Zeichens im Text enthält, welches gerade ausgegeben wird.
Der String wird Buchstabe für Buchstabe ausgegeben, und daher ist bekannt, an welcher Position es sich im Text befindet.
80 und 100 ist die Position im Text, also zurzeit frage ich ob sich i zwischen 80 und 100 (bzw später 180 und 200 usw) befindet, ob sich an der stelle ein Leerzeichen befindet, und ob schon ein Zeilenumbruch in der Zeile gemacht wurde.
Sollten alle Bedingungen erfühlt sein, wird an dieser Textpostion ein Zeilenumbruch durch /n erzwungen, i um 1 zurückgesetzt, damit die Zeichenposition im String wider stimmt, und die Ausgabe keine Zeichen verschluckt.

Habe keine Idee, wie ich das für unendlich viele Zeichen umsetzen könnte.
i Läuft solange wie es Zeichen im Text gibt, habe mir schon überlegt, ob ich mit Modulo fragen kann, wo sich i befindend, ,also i%100 == 0bzw (i-20)%80 == 0
Aber dann habe ich nur genau diese zwei Positionen im Text, aber nicht zwischen genau diesen.
Glaube aber das es sowieso der falsch Ansatz ist, und ich mich jetzt noch Stunden (Tage) daran aufhalten werden.
Daher frage ich jetzt einfach mal, ob ihr noch eine Idee habt.

Schonmal Danke für eine Antwort
Mit freundlichen Grüßen
Power-Poler
Mitglied: Arano
05.06.2013, aktualisiert um 19:48 Uhr
Hallo,

also die Position des möglichen, neuen Zeilenumbruchs ist doch Variable... warum verwendest du dann keine Variablen ?
Hm... und wenn 20 Zeichen als Spielraum nicht ausreichen ? (s. Zeile 3 meines Codes, so geschrieben __sind es__ 20 Zeichen !) (21 Zeichen wenn ich "ä" gegen "ae" tausche )
01.
$txtLenth = strlen( $langertext ); 
02.
$l = 80; // Zeilen_L_änge 
03.
$z = 20; // Zeilenlängen_Z_ugabe 
04.
$a = $l
05.
$b = $a+$z
06.
for( $i=0; $i<$txtLenth; ++$i
07.
08.
    if( $i>$a && $i<$b && Text.equals(" ") ) 
09.
10.
        echo "Leerzeichen gefunden an $i, zwischen Position $a bis $b"
11.
        // ...ersetze Leerzeichen durch Zeilenumbruch... 
12.
        $a = $i+$l; // neue Startposition = aktuelle Position plus Mindestzeilenlänge 
13.
        $b = $a+$z; // neue Endposition = neue Startposition plus Zugabe 
14.
         
15.
        continue; // ...um mit dem nächstem Schleifendurchlauf zu beginnen... Zeilenumbruch wurde ja erzeugt ! 
16.
17.
     
18.
    // Notfall Zeilenumbruch...  ( $i IST größer als $b
19.
    if( $i>$b
20.
21.
        // ...füge Zeilenumbruch ein... 
22.
        $a = $i+$l
23.
        $b = $a+$z
24.
25.
}
Sollte so (oder so ähnlich) doch funktionieren

...ein Bisschen aufgeräumter...
01.
$txtLenth = strlen( $langertext ); 
02.
$l = 80; // Zeilen_L_änge 
03.
$z = 20; // Zeilenlängen_Z_ugabe 
04.
$a = $l
05.
$b = $a+$z
06.
for( $i=0; $i<$txtLenth; ++$i
07.
08.
    if( $i<$a ) // die Zeichen vor Position $a interessieren uns nicht 
09.
        continue
10.
    // ab hier ist $i immer größer als $a 
11.
     
12.
    if( $i>$b ) // sollte $i tatsächlich mal größer als $b sein 
13.
14.
        // NOTFALL Zeilenumbruch 
15.
        $a = $i+$l
16.
        $b = $a+$z
17.
        continue
18.
19.
    // ab hier ist $i immer zwischen/an Position $a bis $b 
20.
 
21.
    if( Text.equals(" ") ) // wenn Leerzeichen gefunden... 
22.
23.
        echo "Leerzeichen gefunden an $i, zwischen Position $a bis $b"
24.
        // ...ersetze Leerzeichen durch Zeilenumbruch... 
25.
        $a = $i+$l; // neue Startposition = aktuelle Position plus Mindestzeilenlänge 
26.
        $b = $a+$z; // neue Endposition = neue Startposition plus Zugabe 
27.
28.
}

~Arano
Bitte warten ..
Mitglied: Power-Poler
05.06.2013 um 21:02 Uhr
Danke, funktioniert einwandfrei, und hat scheinbar gleiche ein anderes Problem mit gelöst, warum weiß ich zwar jetzt nicht, aber die Zeilenumbrüche bleiben beim auslesen erhalten, was sie vorher nicht gemacht haben.
Und ich habe noch einen Fehler im meinem code ausfindig gemacht, das i-1 ist misst.
er gibt zwar alle Zeichen aus, trennt aber mitten im Wort. Ohne das -1 geht es. Naja
Vielen dank für deine Hilfe!
Bitte warten ..
Mitglied: Arano
05.06.2013 um 21:15 Uhr
Hi,

Danke, funktioniert einwandfrei
HA, das freut mich, jetzt kann ich zufrieden schlafen gehen...

Frage noch als gelöst markieren und dann sind auch andere glücklich


~Arano
Bitte warten ..
Mitglied: Power-Poler
05.06.2013 um 22:09 Uhr
Da war ja was.
Hab ich ganz vergessen, werde ich sofort nachholen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Batch ausgabe zeilenweise stat spaltenweise ausgeben (4)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
gelöst Powershell array zeilenweise in Textdatei ausgeben (6)

Frage von Peter0816 zum Thema Windows Server ...

VB for Applications
Dateien nach "Text" durchsuchen und Pfad ausgeben (32)

Frage von chgs2011 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...