Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schleifen probleme (https://www.delphipraxis.net/133089-schleifen-probleme.html)

gangs-taas 25. Apr 2009 10:20


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 ^^

DeddyH 25. Apr 2009 10:24

Re: Schleifen probleme
 
Das könnte man doch durch Multiplikation ganz einfach lösen, meinst Du nicht?

gangs-taas 25. Apr 2009 10:32

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...

jfheins 25. Apr 2009 10:33

Re: Schleifen probleme
 
Variable V2 einführen, die den Startwert von V1 hat und dann:

repeat
...
V1 := V1 + V2;
...

;)

DeddyH 25. Apr 2009 10:34

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;

gangs-taas 25. Apr 2009 10:42

Re: Schleifen probleme
 
hab das probiert nur hängt sich jetzt meine schleife auf xD XD


repeat
...
V1 := V1 + V2;

unpraktisch xD

DeddyH 25. Apr 2009 10:45

Re: Schleifen probleme
 
Zitat:

Zitat von gangs-taas
hab das probiert nur hängt sich jetzt meine schleife auf xD XD

Und nun? :glaskugel: Etwas mehr Code wäre schon hilfreich.

mkinzler 25. Apr 2009 10:46

Re: Schleifen probleme
 
Was meinst du mit aufhängen? Zeig mal deine Abbruchbedingung

gangs-taas 25. Apr 2009 10:48

Re: Schleifen probleme
 
okay
dauert aber nen mom muss das erst alles schön einrücken xD

gangs-taas 25. Apr 2009 10:58

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;

mkinzler 25. Apr 2009 11:02

Re: Schleifen probleme
 
Was steht anfänglich in ZwischenText?

Btw. Rücke mal so ein das
Delphi-Quellcode:
begin
   ...
end;
auf einer Ebene stehen dann ist es übersichtlicher.

DeddyH 25. Apr 2009 11:04

Re: Schleifen probleme
 
Was passiert denn, wenn keine der drei Bedingungen zutrifft?

gangs-taas 25. Apr 2009 11:09

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


???

mkinzler 25. Apr 2009 11:13

Re: Schleifen probleme
 
Zitat:

im zwischentext ist ein string (ne zahlenkobination) die in memo1 steht.
und diese ist anfänglich auf jeden Fall kürzer als EndVar?
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;
...

DeddyH 25. Apr 2009 11:16

Re: Schleifen probleme
 
Zitat:

Zitat von gangs-taas
reicht das wenn ich einfach unten drunter schreib

else
break

Probier' s doch einfach aus ;). Aber sag doch einmal genau, was der Code machen soll, evtl. gibt es da auch eine übersichtlichere Lösung dafür.

gangs-taas 25. Apr 2009 11:18

Re: Schleifen probleme
 
Zitat:

Zitat von mkinzler
Zitat:

im zwischentext ist ein string (ne zahlenkobination) die in memo1 steht.
und diese ist anfänglich auf jeden Fall kürzer als EndVar?


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 !

mkinzler 25. Apr 2009 11:22

Re: Schleifen probleme
 
Dann ist es ja auch klar, warum es eine Endlosschleife ist. :zwinker:

gangs-taas 25. Apr 2009 11:32

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...

mkinzler 25. Apr 2009 11:34

Re: Schleifen probleme
 
Die Lösung sthet eigentlich schon da ( du musst diese nur umsetzen)

gangs-taas 25. Apr 2009 11:36

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 ....

gangs-taas 25. Apr 2009 12:02

Re: Schleifen probleme
 
ich hab schon beide von euch genannte möglichkeiten ausprobiert
es geht beides nicht ....

DeddyH 25. Apr 2009 12:08

Re: Schleifen probleme
 
Zitat:

Zitat von DeddyH
Aber sag doch einmal genau, was der Code machen soll, evtl. gibt es da auch eine übersichtlichere Lösung dafür.


gangs-taas 25. Apr 2009 13:04

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 ?

DeddyH 25. Apr 2009 13:08

Re: Schleifen probleme
 
Nicht ganz. Die Länge eines Buchstabens ist doch immer 1, oder was meinst Du genau?

gangs-taas 25. Apr 2009 13:10

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

DeddyH 25. Apr 2009 13:14

Re: Schleifen probleme
 
Ich rekapituliere mal: Du hast eine Art Zuordnungstabelle, in der z.B. so etwas steht
Code:
T=123
E=234
S=345
Damit ergäbe sich für das Wort "Test" als verschlüsselter Text dann "123234345123", richtig?

gangs-taas 25. Apr 2009 13:15

Re: Schleifen probleme
 
jap

DeddyH 25. Apr 2009 13:22

Re: Schleifen probleme
 
Gut, dann mal etwas Pseudocode:
Delphi-Quellcode:
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;
So in etwa sollte das doch funktionieren.

gangs-taas 25. Apr 2009 13:25

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: :(

DeddyH 25. Apr 2009 13:27

Re: Schleifen probleme
 
Die Funktion "ZugeordneterBuchstabe" würde das zurückgeben. Mein Beispiel ist ja nur Pseudocode ;)

gangs-taas 25. Apr 2009 13:28

Re: Schleifen probleme
 
ZugeordneterBuchstabe ist ne funktion ?

kann man funktionen in andere funktionen einbinden ?

DeddyH 25. Apr 2009 13:29

Re: Schleifen probleme
 
Natürlich kann man das.

gangs-taas 25. Apr 2009 13:33

Re: Schleifen probleme
 
und wo schreibst du die dann hin ? und was steht da in deinem pseudocode drin ? bzw was würde drin stehen ?

DeddyH 25. Apr 2009 13:41

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;

gangs-taas 25. Apr 2009 13:44

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;

DeddyH 25. Apr 2009 13:46

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: http://www.christian-stelzmann.de/ar...hkursReloaded/

gangs-taas 25. Apr 2009 13:51

Re: Schleifen probleme
 
danke werde ich machen

gangs-taas 25. Apr 2009 13:54

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 ?

mkinzler 25. Apr 2009 13:55

Re: Schleifen probleme
 
Delphi-Quellcode:
if <Zahl> MOD <Teiler> <> 0 then ...

gangs-taas 25. Apr 2009 13:58

Re: Schleifen probleme
 
hä ? durh was soll ich das den teilen ?1


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz