AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein copy(text,x,y) durch while... do - schleife ersetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

copy(text,x,y) durch while... do - schleife ersetzen?

Ein Thema von qwertz543221 · begonnen am 18. Jun 2009 · letzter Beitrag vom 18. Jun 2009
Antwort Antwort
qwertz543221
(Gast)

n/a Beiträge
 
#1

copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:15
hallo ich möchte folgende anweisung in eine while do schleife umwandeln, da ich denke, dass das kopieren mit dem delphi-internen befehl zu langsam sein könnte.
Delphi-Quellcode:
n:='5001';
while i<=length(text) do
  begin
  zahl:=copy(text,i,length(n));
  //befehlsfolge (...)
  i:=i+length(n)
  end;
  result:=textneu;
   end;
wie geht das am besten?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#2

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:21
Irgendwie versteh ich nicht ganz was dein Code machen soll. Was hast du denn vor?
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#3

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:23
einfach nur das copy ersetzen, das ganze ist für rsa impl. gedacht

und ich bin der meinung, dass copy()einfach zu langsam ist, deshalb brauch ihc nur eine übersetzung des teils in eine while schleife
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:25
Delphi-Quellcode:
for i := x to x+y do
    s := s + text[i];
Markus Kinzler
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#5

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:28
ich hab das schon so ähnlich probiert, aber irgendwie scheint das nicht zu klappen, vorallem mit dem späteren i:=i+length(n)
das soll nämlich nicht nur +1, sondern +length(n) rechnen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#6

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:34
Zitat von qwertz543221:
Delphi-Quellcode:
i:=1;

 while i<=length(text) do
  begin
  zahl:=copy(text,i,length(n));
  wa:=zahl;
  wa:=mathe.PotenzModulo(wa,d,n);
  textneu:=textneu+chr(strtoint(mathe.Quotient(wa,'256')))+chr(strtoint(mathe.Modulo(wa,'256')));
  i:=i+length(n)
  end;
  result:=textneu;
   end;
bitte nicht alles per PN (mein Postfach ist eh schon überfüllt)

und wie du an den Reaktionen der Anderen erkennst, darfst du wichtige Dinge nicht weglassen, sonst kann keiner wirklich helfen

Delphi-Quellcode:
Wenn das n nicht zufällig 1 isst, dann bekommst du das Copy garnicht los.

[pre]SetLength(result, Length(text) div length(n) * 2);
i:=1;
for i := 1 to length(text) div length(n) do
begin
  wa:=copy(text,i,length(n));
  wa:=mathe.PotenzModulo(wa,d,n);
  mathe.QuotientModulo(wa,'256', q, m);
  result[t*2-1]:=chr(strtoint(q));
  result[t*2]:=chr(strtoint(m));
end;[/pre]

dann könnte man eine Rechenoperation einsparen
> Quotient und Modulo gemeinsam berechnen

ja und nicht ständig die 2 Zeichen an den "result"-String anhängen.
dieses verlängert den String ständung und kopiert diesen dazu um.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:34
Zitat von qwertz543221:
ich hab das schon so ähnlich probiert, aber irgendwie scheint das nicht zu klappen, vorallem mit dem späteren i:=i+length(n)
das soll nämlich nicht nur +1, sondern +length(n) rechnen
Und warum das? Entwser immer ein Zeichen oder gleich den ganzen String. Falls Copy() wirklich das Problem wäre, dann würdest du das Problem durch öfteres Aufrufen noch verstärken
Markus Kinzler
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#8

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:40
ok danke
die zwei zeichen werden doch an einen neuen angehängt, an dem alten ändert sich dabei nichts

ich dachte nur, dass man das copy in eine while schleife ändern kann, weil die so schön schnell ist

zb

Delphi-Quellcode:
i:=1;
while i<=length(text) do
begin
  textneu:=textneu+text[i];
  i:=i+1;
end;
soweit geht es ja

nur dann will ich zum nächsten block springen(also eigentlich sollte das nur+length(modul) sein, doch das geht iwie nicht

[edit=mkinzler] Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:46
Wenn du aber in dieser Schleife mehr als 1 zu i hinzuzählst kopierst machst du was anderes als Copy()

Delphi-Quellcode:
text := 'Hallo Welt!';
x := 2;
y := 8;
n := 2;

s := Copy( text, x, y); // s: 'allo Wel';

i:=1;
while i<=length(text) do
begin
  textneu:=textneu+text[i];
  i:=i+n;
end;
/7Textneu: 'HloWl!'
Markus Kinzler
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#10

Re: copy(text,x,y) durch while... do - schleife ersetzen?

  Alt 18. Jun 2009, 19:49
ich denke,da musste auch i durch x ersetzen und die schleife bis y laufen lassen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
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