, afbreken... (Spaanse woorden),,,,,, het woord, en soms moeten we zien of de gedrukte tekst, we willen elkaar lang genoeg, niet geschikt voor het einde van de lijn, om te voorkomen dat volledig in de lijn valt nog te veel ruimte, het gebruik van.,, de belangrijkste vraag is hoe de verdeling van lettergrepen woorden.Well, I really don't know how to syllabicate in English, so I leave that part to you, but I hope you find the example on Spanish syllabication useful:,,, procedure Syllabify(Syllables: TStringList; s: string);,, const,, Consonants = ['b','B','c','C','d','D','f','F','g','G',,, 'h','H','j','J','k','K','l','L','m','M','n','N',,, 'ñ','Ñ','p','P','q','Q','r','R','s','S','t','T',,, 'v','V','w','W','x','X','y','Y','z','Z'];,, StrongVowels = ['a','A','á','Á','e','E','é','É',,, 'í','Í','o','ó','O','Ó','ú','Ú'];,, WeakVowels = ['i','I','u','U','ü','Ü'];,, Vowels = StrongVowels + WeakVowels;,, Letters = Vowels + Consonants;,, var,, i, j, n, m, hyphen: integer;,, begin,, j := 2;,, s := #0 + s + #0;,, n := Length(s) - 1;,, i := 2;,, Syllables.Clear;,, while i <= n do begin,, hyphen := 0; //Do not hyphenate,, if s[i] in Consonants then begin,, if s[i+1] in Vowels then begin,, if s[i-1] in Vowels then hyphen := 1;,, end else if (s[i+1] in Consonants) and,, (s[i-1] in Vowels) then begin,, if s[i+1] in ['r','R'] then begin,, if s[i] in ['b','B','c','C','d','D','f','F','g',,, 'G','k','K','p','P','r','R','t','T','v','V'],, then hyphen := 1 else hyphen := 2;,, end else if s[i+1] in ['l','L'] then begin,, if s[i] in ['b','B','c','C','d','D','f','F','g',,, 'G','k','K','l','L','p','P','t','T','v','V'],, then hyphen := 1 else hyphen := 2;,, end else if s[i+1] in ['h', 'H'] then begin,, if s[i] in ['c', 'C', 's', 'S', 'p', 'P'],, then hyphen := 1 else hyphen := 2;,, end else,, hyphen := 2;,, end;,, end else if s[i] in StrongVowels then begin,, if (s[i-1] in StrongVowels) then hyphen := 1,, end else if s[i] = '-' then begin,, Syllables.Add(Copy(s, j, i - j));,, Syllables.Add('-');,, inc(i);,, j := i;,, end;,, if hyphen = 1 then begin //Hyphenate here,, Syllables.Add(Copy(s, j, i - j));,, j := i;,, end else if hyphen = 2 then begin //Hyphenate after,, inc(i);,, Syllables.Add(Copy(s, j, i - j));,, j := i;,, end;,, inc(i);,, end;,, m := Syllables.Count - 1;,, if (j = n) and (m >= 0) and (s[n] in Consonants) then,, Syllables[m] := Syllables[m] + s[n] //Last letter,, else,, Syllables.Add(Copy(s, j, n - j + 1)); //Last syllable,, end;,,, To test the procedure yon can drop a Textbox and a Label on a form and in the Change event of the Textbox write:,,, procedure TForm1.Edit1Change(Sender: TObject);,, var,, Syllables: TStringList;,, begin,, Syllables := TStringList.Create;,, try,, Syllabify(Syllables, Edit1.Text);,, Label1.Capti: = stringreplace (TRIM (lettergrepen), 13, #, . "-" [rfreplaceall]); en, tot slot, de vrijheid, de lettergrepen;,,,,,,, aan het einde van het;; nu hebben we in de loop van een lettergreep, we moeten, we kunnen niet in een lettergreep in woorden afbreken.Het is meestal de juiste, wenselijk is, en /of bij kleine lettergreep in de linker of rechter een woord voor woord bijvoorbeeld heeft aan beide zijden van ten minste twee lettergrepen in combinatie met, of als voorbeeld, om ervoor te zorgen dat we er aan beide zijden van ten minste vier woorden:,,, programma 's applyrules (lettergrepen: tstringlist);,, //garantie op links, ten minste vier letters, woorden /recht deel te doen beginnen, lettergreep,,, als het aantal = 1, dan stopt, en tellen >; 1 begint, als de lengte (string [0]) > = 4, touw, dan breken; [0]:= akkoord [0] + akkoord [1];,, geschrapt (1),,,,, en het einde van het aantal lettergrepen >; 1.Je begint, als de lengte (string [count-1]) > = 4 en het akkoord count-2]:=;,, [] [count-2 touw, touw, count-1] + [(,, geschrapt; count-1);,,,,,,, aan het einde van het;,,, aan het einde van die tijd. De oplossing van de scheiding van een deel van de tekst moet de lijn worden gecombineerd.Hier is een voorbeeld van een tekst is in een memorandum dat:,,, in de procedure afbreken (opmerking: TMemo; oorspronkelijke tekst: tstrings);,, var, lid I, J, K, m, n, maxlinewidth: gehele getal;,,,,,,.,.,: tbitmap componenten; foto 's, doek: stof;,,,, tstringlist lettergreep:;,, lettergreep: = tstringlist. Creëren;,,,, moeten we gebruik maken van de textwidth. ///////- methode om de breedte,, ///////tekst of het geschikt is Voor de afnemers in de regio of niet.,, ///////TMemo geen canvas bezit, dus moeten we, het creëren van een van onze eigen, ///////.,,.: = tbitmap componenten. Het creëren van;,, canvas: = bitmap. Canvas;,,,, canvas. Type: = memo. De letters;,, maxlinewidth:memo.clientwidth = 6; ///////maximale breedte. Het memorandum. Lijn. Duidelijk, paragrafen: = 0;, het origineel. Tellen vanaf 1, /van elk lid, de oorspronkelijke paragraaf: = []; ////////krijgen door De oorspronkelijke paragrafen, draad, we breken de leden, en het doek. Textwidth (s) > maxlinewidth doen beginnen, in de eerste plaats, /we vonden ("J"), eerste zin, te beginnen met de index /niet geschikt voor (een koppeltekenAT), J = 1;,,, n = lengte (s) = 2; ik:;,, maar ik < = n beginnen als (S [...] = ") en S [M] < >") en dan, J = m; ///////vorig jaar begon een zin, als het doek. Textwidth (replicatie (s, 1, m) > maxlinewidth dan gebroken; ///////de breedte niet geschikt, Inc. (i);,,,, /; waar het gebeurd is?Als ik het was, ik denk dat we kunnen beginnen.We breken van de ruimte, het memorandum toegevoegd,. (kopieën (kopieën, 1, 1, 1); ///////bij ROW, ROW, ROW, ROW, ROW, ROW, ROW, ROW, ROW, /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////.Nu, we vinden in de "K"), de eerste ruimte, ///////na het woord (K), K = J + 1;,, terwijl (K < = n) en (s[k] < > ") do Inc (K); het woord in de kloof,. ///////Syllables Syllabify (Syllables,,, - (s, J, K - J));,, ApplyRules (Syllables);,, ///////- (in de" m ") hoeveel syllables fit, M = 0;:,, de lijn: = (S - 1, J - 1), terwijl de;, Canvas.TextWidth (lijn + Syllables[m] +"), < = MaxLineWidth doen gaan, lijn: = lijn + Syllables[m];,, Inc. (m);,, einde;,, als (M < > 0) en (Syllables[m-1] < > ") dan beginnen,. ///////Hyphenate, lijn: = lijn + "-";,, J = lengte (lijn);,, als Syllables[m] = "dan Inc. (J);,, einde;,, Memo.Lines.Add (lijn); ///////toevoegen de lijn,, S = - (s, J, N - J + 1) Verwijder de lijn; ///////, einde;,,,,,,, Memo.Lines.Add (s); ///////toevoegen de laatste lijn (het,, aan het einde van in); ten slotte, Bitmap.Free;,,,,,,,,,,,, en ten slotte, Syllables.Free; einde;,,,,, voor de test wordt; de procedure a memo onderdeel A, vallen op de aanpassing van het voor de vorm, bijvoorbeeld aan de Top van de vorm (sluiten = alTop) en schrijven de volgende code in het geval van de. Ook de procedure TForm1.FormResize (,,,, Sender: TObject);De tstringlist var,,,,,,, de oorspronkelijke tekst: = tstringlist. Creëren;,,,, de oorspronkelijke tekst ('si. Toevoeging van se ha preguntado cómo ook los, de financiering van de in procesamiento, + ", met dividir naast, +" tegen 德吉奥内 uiteindelijk de una Línea, hij met í De Verenigde Naties ",, + zoals sencillo (en comparación con los que Las Vegas', van ons, + procesamiento aplicaciones de de)") tekst toegevoegd;,,. ('este es un Segundo párrafo que zelf bewijzen "," tegen de zoals boetes, +. "), en (memo1; afbreken, De oorspronkelijke tekst); en, tot slot, de oorspronkelijke tekst,. Vrijheid;,,,,,,, aan het einde van het;; je kan vindenmet Pascal COMMUNICATIE archieven in de source code23.
Een eenvoudige woorden,
Previous:Aangepaste verpakking (ccpack 5)
Next Page:Verificatie van