![]() |
Schleifen probleme
hallo
ichh ab schon wieder eine frage ^^ also ich habe eine repeat-schleife. und in dieser schleife benutz ich eine variable V1 so nun soll V1 beim ersten durchlaufen der schleife V1+1 sein das bekomme ich auch noch hin hab einfach innerhalb der schleife geschrieben V1 := V1 +1 okay nun zu meinem Problem beim 2ten durchlauf der Schleife soll V1 V1+V1+1 sein beim 3 durchlauf der schleife V1+V1+V1+1 und so weiter .... und ich weiß nicht wie ich das meinem pc erkären soll xD könnt ihr mir helfen ? und hab ich das so formuliert das ihr versteht wie ich das mein ?? :?: danke schonmal ^^ |
Re: Schleifen probleme
Das könnte man doch durch Multiplikation ganz einfach lösen, meinst Du nicht?
|
Re: Schleifen probleme
aber wie ?
wenn ich *2 mach stimmt es z.b. beim 3ten durchlauf nicht mher .... also er soll ja eigendlich V1 * dieAnzahlDerDurchläufeDerSchleife weißt du `? und ich weiß nicht wie... |
Re: Schleifen probleme
Variable V2 einführen, die den Startwert von V1 hat und dann:
repeat ... V1 := V1 + V2; ... ;) |
Re: Schleifen probleme
Delphi-Quellcode:
procedure TfrmMain.Machwas;
var V1, Multiplikator: integer; begin V1 := 1; Multiplikator := 1; repeat //multiplizieren und einen hochzählen V1 := V1 * Multiplikator + 1; //zur Kontrolle in einer Listbox ausgeben ListBox1.Items.Add(InttoStr(V1)); //Multiplikator um eins erhöhen inc(Multiplikator); until Multiplikator > 5; end; |
Re: Schleifen probleme
hab das probiert nur hängt sich jetzt meine schleife auf xD XD
repeat ... V1 := V1 + V2; unpraktisch xD |
Re: Schleifen probleme
Zitat:
|
Re: Schleifen probleme
Was meinst du mit aufhängen? Zeig mal deine Abbruchbedingung
|
Re: Schleifen probleme
okay
dauert aber nen mom muss das erst alles schön einrücken xD |
Re: Schleifen probleme
so hoffe irh steigt da durch ^^
Delphi-Quellcode:
var
GanzerText : string; LängeEinesBuchstaben : integer; Multiplicator : integer; sTemp1 : string; sTemp : integer ; EndVar : Integer; begin [...] EndVar := (Length(Memo1.Text)); // Variable wann später abgebrochen werden soll EndVar := Round(EndVar / LängeEinesbuchstaben); sTemp1:= Copy(GanzerText, 1, Length(Memo1.Text)); sTemp := StrToInt(Copy(sTemp1,1,LängeEinesBuchstaben)); Multiplicator := 1; repeat begin If (sTemp = StrToInt(Va)) Then begin ZwischenText := ZwischenText + 'a'; sTemp1 := Copy(sTemp1,(LängeeinesBuchstaben),(Length(GanzerText))); sTemp := StrToInt(Copy(sTemp1,1,LängeEinesBuchstaben)); If ( Length(ZwischenText) = EndVar) Then begin Schalter := 1; break; end; end Else If (sTemp = StrToInt(Vb)) Then begin ZwischenText := ZwischenText + 'b'; sTemp1 := Copy(GanzerText,(LängeeinesBuchstaben),(Length(GanzerText))); sTemp := StrToInt(Copy(sTemp1,1,LängeEinesBuchstaben)); If ( Length(ZwischenText) = EndVar) Then begin Schalter := 1; break; end; end Else If (sTemp = StrToInt(Vz)) Then begin ZwischenText := ZwischenText + 'z'; sTemp1 := Copy(GanzerText,(LängeeinesBuchstaben),(Length(GanzerText))); sTemp := StrToInt(Copy(sTemp1,1,LängeEinesBuchstaben)); If ( Length(ZwischenText) = EndVar) Then begin Schalter := 1; break; end; end; LängeEinesBuchstaben := StrToInt(Copy(Edit1.Text,1,1)); LängeEinesBuchstaben := Multiplicator * LängeEinesBuchstaben +1 ; until (Length(ZwischenText) = EndVar) ; [...] end; |
Re: Schleifen probleme
Was steht anfänglich in ZwischenText?
Btw. Rücke mal so ein das
Delphi-Quellcode:
auf einer Ebene stehen dann ist es übersichtlicher.
begin
... end; |
Re: Schleifen probleme
Was passiert denn, wenn keine der drei Bedingungen zutrifft?
|
Re: Schleifen probleme
im zwischentext ist ein string (ne zahlenkobination) die in memo1 steht.
wie einrücken ?! man ich verseh nicht wie ihr es haben wollt xD :wall: :wall: hm... wenn nichts eintrifft .. ich glaub dann ist das pech hab ich vergessen im quelltext zu schreiben. reicht das wenn ich einfach unten drunter schreib else break ??? |
Re: Schleifen probleme
Zitat:
Wegen Einrückung: Es ist einfach übersichtlicher, wenn man sofort sieht welches begin und end zusammengehören
Delphi-Quellcode:
...
If (sTemp = StrToInt(Va)) Then begin | ZwischenText := ZwischenText + 'a'; | sTemp1 := Copy(sTemp1,(LängeeinesBuchstaben),(Length(GanzerText))); | sTemp := StrToInt(Copy(sTemp1,1,LängeEinesBuchstaben)); | If ( Length(ZwischenText) = EndVar) Then | begin | | Schalter := 1; | | break; | end; end; ... |
Re: Schleifen probleme
Zitat:
|
Re: Schleifen probleme
Zitat:
nein die ist auf jedenfall länger als EndVar also meinetwegen Memo1.text = 000290267158000290 und Endvar = 3 EDIT das ist blödsinn was ich hier geschrieben habe. sorry irg. verdreht also zwischentext soll hinterher genau so lang sein wie EndVar ich mein wenn EndVar = 3 dann soll zwischentext hinterher GENAU 3 Zeichen enthalten ! |
Re: Schleifen probleme
Dann ist es ja auch klar, warum es eine Endlosschleife ist. :zwinker:
|
Re: Schleifen probleme
und das mit dem hochzählen klappt irg. auch nicht so ich das wollte ...
so ich muss jetzt leider weg ich gucke nacher nochmal was ihr geschrieben habt und probiere es dann aus... |
Re: Schleifen probleme
Die Lösung sthet eigentlich schon da ( du musst diese nur umsetzen)
|
Re: Schleifen probleme
also es ist bei mir jetzt keine endlosschleife mehr dafür klappt das mit dem hochzählen nicht so wie ich das will ...
sTemp1 müsste ja in der ersten runde 000290 sein in der 2ten 267158 und in der dritten wieder 000290 (weil der ganze text das ist => 000290267158000290 so nun klapt das aber nicht in der ersten runde ist es 000290 8was ja auch so gewollt ist) diezweite runde klappt auch dann ist sTemp hinterher 267158 aber in der dritten runde ist stemp1 nicht 000290 sondern 267158000290 und dann ghet es nicht mehr .... |
Re: Schleifen probleme
ich hab schon beide von euch genannte möglichkeiten ausprobiert
es geht beides nicht .... |
Re: Schleifen probleme
Zitat:
|
Re: Schleifen probleme
also er soll den text eines Textfeldes kopieren,
dann soll er die ersten x buchstaben des Textes nehmen und überprüfen ob sie einer bestimmten zahlenkombi entspricht (also va,vb,oderbz) wenn ja soll er dies in einen Zwischenstring übergeben. anschließend soll er das ganze mit den nächsten x buchstaben des memo-feldes machen hierzu soll stamp1 (also ne zwischenvariable) nur noch von der länge eines buchstabens bis zum ende gehen. anschließend soll die if abfrage wieder überprüfen ob die ersten x zahlenen ner zahlen kombi entsprechen ect. verstanden ? |
Re: Schleifen probleme
Nicht ganz. Die Länge eines Buchstabens ist doch immer 1, oder was meinst Du genau?
|
Re: Schleifen probleme
also es ist nen endschlüsselungs-programm
und bei mir ist jeden buchstaben eine zahlenkombie mit der länge x zugewiesen. und "Zwischentext" ist ein string wo der Klartext-text zwischengespeichert wird |
Re: Schleifen probleme
Ich rekapituliere mal: Du hast eine Art Zuordnungstabelle, in der z.B. so etwas steht
Code:
Damit ergäbe sich für das Wort "Test" als verschlüsselter Text dann "123234345123", richtig?
T=123
E=234 S=345 |
Re: Schleifen probleme
jap
|
Re: Schleifen probleme
Gut, dann mal etwas Pseudocode:
Delphi-Quellcode:
So in etwa sollte das doch funktionieren.
function Entschlüsseln(Eingabe: string; Länge: integer): string;
var Index: integer; begin Index := 1; Result := ''; while Index < Length(Eingabe) do begin Result := Result + ZugeordneterBuchstabe(Copy(Eingabe,Index,Länge)); Index := Index + Länge; end; end; |
Re: Schleifen probleme
und wo prüfst du jetzt ob der string den du hast einem 'wert' in deiner
'tabele' T=123 E=234 S=345 zugewiesen hat ? ich versteh dein code nicht :wall: :( |
Re: Schleifen probleme
Die Funktion "ZugeordneterBuchstabe" würde das zurückgeben. Mein Beispiel ist ja nur Pseudocode ;)
|
Re: Schleifen probleme
ZugeordneterBuchstabe ist ne funktion ?
kann man funktionen in andere funktionen einbinden ? |
Re: Schleifen probleme
Natürlich kann man das.
|
Re: Schleifen probleme
und wo schreibst du die dann hin ? und was steht da in deinem pseudocode drin ? bzw was würde drin stehen ?
|
Re: Schleifen probleme
Die Funktion könnte z.B. so aussehen:
Delphi-Quellcode:
function ZugeordneterBuchstabe(const Eingabe: string): string;
begin case StrToIntDef(Eingabe,0) of 0: Result := ''; 123: Result := 'T'; 234: Result := 'E'; 345: Result := 'S'; end; end; |
Re: Schleifen probleme
kannst du mir auch erklären was du alles oben in die erste zeile schreibst und wieso ?
also das hier ?? oder gibs da vllt sogar nen tuorial für ? hier bei euch ? ^^
Delphi-Quellcode:
function ZugeordneterBuchstabe(const Eingabe: string): string;
|
Re: Schleifen probleme
Du willst ein Verschlüsselungsprogramm schreiben und weißt nicht einmal, was eine Funktion ist bzw. wie man die deklariert? Dann solltest Du das hier mal lesen:
![]() |
Re: Schleifen probleme
danke werde ich machen
|
Re: Schleifen probleme
sag mal
man bekommt (bzw ich bekomme) abundzu fehlermeldungen 'dasunddas ist kein gültiger integer-wert' kann man irgendwie mit einer if abfrage sagen if(dasunddas ist kein gültiger integer wert mehr) then close ?? bevor die fehlermeldung kommt ? oder das er breakt ? |
Re: Schleifen probleme
Delphi-Quellcode:
if <Zahl> MOD <Teiler> <> 0 then ...
|
Re: Schleifen probleme
hä ? durh was soll ich das den teilen ?1
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz