Autor Beitrag
sennaheu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 24.04.03 18:01 
kann mir bitte schnell jemand helfen?
ich müsste wissen wie ich einen lauftext in einem edit ausgebe, den es vorher aus einem anderen edit eingelesen hat.
habe leider bis jetzt im internet nichts gefunden was mir hilft, da 1. alles in einer function sein soll und 2. ich statt einem timer den befehl edit2.refresh; sleep(50); innerhalb einer for-Schleife verwenden will.

habe bei dem programm noch ein weiteres problem.
ich würde gerne ebenfalls den text aus dem edit1 im edit2 wortweise rückwärts ausgeben.
ich weiss, das ist jetzt peinlich, da das wirklich einfach ist. ich hab mich aber irgendwo verheddert und komm nicht auf den fehler.
hat jemand vielleicht auch da einen vorschlag, der noch unbefangen von meinem versuch ist?

wäre super wenn mir jemand weiterhelfen könnte.

thx,
sennaheu
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 24.04.03 18:19 
Ich gebe dir mal als Stichwort:

Length(Edit1.Text)

Grüße, Alex..

_________________
Hasta La Victoria Siempre
sennaheu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 24.04.03 18:30 
danke für den gutgemeinten tipp, aber soweit bin ich schon lange.
das prog ist ja schliesslich schon fast fertig, von daher ist lenght nix neues.

das einzige was fehlt sind nur noch diese zwei funktionen. dann hab ich es geschafft. :D
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Do 24.04.03 18:33 
Hallo,

Zu 1:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Procedure Laufschrift(Quelle: String; Ziel: Tedit; Durchlaeufe : Integer);
var i : Integer;
    TextBuf : String;
begin
 TextBuf := Quelle+ '           ';
 For i := 1 to (Durchlaeufe * Length(TextBuf)) do
   begin
   TextBuf := Copy(TextBuf,2,Length(TextBuf)-1) + TextBuf[1];
   Sleep(50);
   Ziel.Text := TextBuf;
   Ziel.Refresh;  // ich würde Application.ProcessMessages  nehmen
  end;
end;

(ist mir so auf die Schnelle eingefallen - ausbaufähig)

Aufgerufen wird das so:
ausblenden Quelltext
1:
2:
3:
4:
Procedure TForm1.Button1Click(Sender: TObject);
begin
 Laufschrift(Edit1.Text, Edit2, 5);
end;


Zu 2:
Laufe den Text von hinten nach vorne durch
ausblenden Quelltext
1:
for i := Length(DeinText) downto 1 do ...					

und suche nach Leerzeichen. Lass dir was einfallen. :wink:

_________________
If accidentally read, induce vomitting.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Do 24.04.03 18:34 
Huch? Naja. :oops:

Aber du mußt doch im Grunde nur schreiben:

ausblenden Quelltext
1:
2:
3:
4:
5:
For I:=Length(Edit1.Text) DownTo 1 Do
Begin
Edit2.Text:=Edit2.Text+Edit1.Text[I];
Edit2.Refresh;
End;


Geht das so nicht? Ich hab's nicht ausprobiert, aber so bzw. so ähnlich muß es gehen, vom logischen Verständnis her.

Muß das unbedingt eine Funktion sein? Diese Dinger habe ich in der Schule nie kapiert und gehaßt, obwohl Sie -korrekt angewandt- sicher sehr, sehr nützlich sind und viel Schreibkram ersparen..

Grüße..

_________________
Hasta La Victoria Siempre
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 24.04.03 18:39 
1) Nim einen Timer, BITTE! Du lastest doch nur unnütz deine Anwendung aus. Oder einen Thread, oder OnIdle() mit einer Zeit-Zähl-Variablen.

2) Also, hier der Code (mal mit Timer):
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
const
 MarqueeText   = 'Hallo +++ ';   // Der Text
 MarqueeLength = 100;            // Länge des Lauftextes
 MarqueeSpeed  = 1;              // Anzahl Zeichen pro Schritt
 MarqueeBack   = True;           // Rückwärts

var
 MarqueePos: Integer = 1;        // Zähler für Lauftext

procedure TMain.Timer1Timer(Sender: TObject);
var
 S: String;
 I, L: Integer;
begin
 L := Length(MarqueeText);

 S := Copy(MarqueeText, MarqueePos, L - MarqueePos + 1);
 While (Length(S) < MarqueeLength) Do
  S := S + MarqueeText;

 If (MarqueeBack) Then begin
  Dec(MarqueePos, MarqueeSpeed);
  While (MarqueePos < 1) Do
   Inc(MarqueePos, L);
 end Else begin
  Inc(MarqueePos, MarqueeSpeed);
  While (MarqueePos > L) Do
   Dec(MarqueePos, L);
 end;

 Edit1.Text := S;
end;


Noch Fragen?

_________________
Life is a bad adventure, but the graphic is really good!
sennaheu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 24.04.03 19:35 
danke,
das mit der laufschrift funktioniert endlich. :D
vielen dank.

das mit dem wortweise rückwärts hab ich mir genauso gedacht.

ich muss in der for-schleife nach leerzeichen suchen.
danach hapert es aber, da ich nicht weiss, wie es weitergeht.
es gibt immer nur den text bis zur ersten leerstelle, also das erste, bzw. mit downto das letzte, wort aus. danach geht es aber nicht weiter... :?