AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String mit Hilfe einer Schleife zerteilen und auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

String mit Hilfe einer Schleife zerteilen und auslesen

Ein Thema von cRayZo · begonnen am 30. Jul 2007 · letzter Beitrag vom 27. Aug 2007
Antwort Antwort
Seite 3 von 3     123   
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#21

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 25. Aug 2007, 11:56
der Quelltext ist noch immer der selbe wie hier wobei der zweite code Probleme bereitet (der erste funktioniert)

ich habe das mit dem pos rückgängig gemacht, weil es mir im mom zu aufwändig ist, exakt jeden buchstaben in der richtigen reihenfolge in einen string zu schreiben, weil vorher buchstaben vertauscht wurden etc. aber diese lange if then else-tabelle kann der Fehler ja nicht sein..
mfg cRayZo
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 25. Aug 2007, 16:56
Zitat von cRayZo:
der Quelltext ist noch immer der selbe wie hier wobei der zweite code Probleme bereitet (der erste funktioniert)

ich habe das mit dem pos rückgängig gemacht, weil es mir im mom zu aufwändig ist, exakt jeden buchstaben in der richtigen reihenfolge in einen string zu schreiben, weil vorher buchstaben vertauscht wurden etc. aber diese lange if then else-tabelle kann der Fehler ja nicht sein..
mfg cRayZo
Da Du nicht schreibst welches Problem Dir der zweite Code bereitet eine kleine Vermutung:

buffer:=trunc((Zahl2 - Zahl1)/ Zahl3); Bis Du dir sicher, dass buffer immer eine eindeutige Zahl zugewiesen bekommt.
Denn es ist nicht sichergestellt, das (Zahl2 - Zah11)/Zahl3 immer ein eindeutiges Ergebnis liefert.
z.B.

105 - 93 = 12 / 4 = 3 -> trunc -> 3
und auch
417 - 365 = 52 / 15 = 3,... -> trunc -> 3

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#23

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 25. Aug 2007, 18:39
Hallo cRayZo,

Zitat:
Ich habde den Fehler mal im COde abgefangen.
Es stimmt, du hast einen Fehler abgefangen. Leider ist es einer, den du erst durch die Fehlerbehandlung eingebaut hast. Wenn man den Quelltext etwas umformatiert, wird es deutlich:

Delphi-Quellcode:
for i := Low(numbers) to High(numbers) do
  try
    s.Add(IntToStr(numbers[i])); // Zugriff auf StringListe
    showmessage(s.Text);
    s.Free; // Freigabe der Stringliste
    Zahl1count:=0;
    Zahl2count:=1;
    Zahl3count:=2;
  except
    begin
      showmessage('Fehler im ersten Bereich');
      break;
    end;
  end;
Beim zweiten Durchlauf wird auf eine Stringliste zugegriffen, die im vorangegangenen Durchlauf freigegeben wurde.

Zitat:
ich habe das mit dem pos rückgängig gemacht, weil es mir im mom zu aufwändig ist, exakt jeden buchstaben in der richtigen reihenfolge in einen string zu schreiben, weil vorher buchstaben vertauscht wurden etc.
Hast du vielleicht versehentlich die Korrektur des Schleifenendwertes (Beitrag #17) ebenfalls rückgängig gemacht?

Zitat:
aber diese lange if then else-tabelle kann der Fehler ja nicht sein..
Möglich, aber sie ist unübersichtlich und somit ein ideales Versteck für weitere Fehler. Bei jeder Änderung deiner Codetabelle mußt du zwei dieser Ungetüme synchronisieren. Das wäre mir auf Dauer zuviel Aufwand...

Gruß Hawkeye
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#24

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 25. Aug 2007, 20:39
Hallo cRayZo,

immer wenn ich in diesem Thread das Wort Gleitkommafehler lese, dann frage ich mich, warum du überhaupt mit der Gleitkomma-Division arbeitest, schließlich ist deine ganze Ver- und Entschlüsselung doch ein reiner Ganzzahl-Algorithmus. Hier bekommst du noch eine Funktion Decode(), die den Ansatz von Hawkeye demonstriert. An der Funktion Encode() kannst du dich mal versuchen.

Delphi-Quellcode:
uses
  Types; // TIntegerDynArray

const
  Alphabet
    = 'abcdefghijklmnopq<rstuvwxyz!"§$%&/()=?*+#-'
    + '_:.,; ABCDEFGHIJKLMNOPQ>RSTUVWXYZ'
    ;
  Chiffre
    = '0;207:3|8;108:20|2;1342:67|3;339:16|3;2019:42|0;2397:47|'
    + '0;1260:84|0;116:29|9;189:36|7;1543:32|6;5802:84|7;1597:3'
    + '0|1;2177:32|4;1660:24|8;1304:27|4;718:14|8;1772:28|7;505'
    + '1:97|4;4668:88|'
    ;

{$I Proc.ExtractNumbers.pas}

function Decode(ida: TIntegerDynArray): string;
var
  i, n: Integer;
begin
  SetLength(Result, Length(ida) div 3);
  for i := 1 to Length(Result) do
  begin
    n := Pred(i) * 3;
    Result[i] := Alphabet[(ida[n + 1] - ida[n]) div ida[n + 2]];
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  ida: TIntegerDynArray;
begin
  ExtractNumbers(Chiffre, ida);
  ShowMessage(Decode(ida));
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#25

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 26. Aug 2007, 22:56
hm also ich hab das Problem gefunden.

danke an Klaus01.

Ja ICH war mir sicher dass immer ein exakter wert heraus kommt, aber mein pc scheinbar nicht. Ich habe den code

buffer:=trunc((Zahl2 - Zahl1)/ Zahl3);

einfach vereinfacht, sodass keine division angewand werden muss.
läuft einwandfrei thx


(edit: endlich )
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#26

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 27. Aug 2007, 14:21
Zitat von Hawkeye219:
Zu deiner "Konvertierungstabelle":
Wäre es nicht viell einfacher und übersichtlicher, den Zeichenvorrat in einen String zu packen? Dann kannst du mit der Funktion Pos nach einem Zeichen suchen und erhältst dessen Position im String oder den Wert 0, falls das gesuchte Zeichen nicht im String enthalten ist.
Dazu hab ich noch eine Frage. Ich habs (meiner Meinung nach) genauso gemacht, wie in der Hilfe, aber Delphi sagt ich hätte nicht genügend parameter. Versteh ich nicht, weil in der Klammer doch eig. nur 2 strings stehen müssen..

Delphi-Quellcode:
buffer2:=Pos(buffer; konvert);

buffer{buchstabe}, konvert{Text in dem gesucht werden soll}: string;
buffer 2: integer;
<-- was fehlt da?

mfg cRayZo
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#27

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 27. Aug 2007, 14:29
buffer2:=Pos(buffer; konvert); da sollte ein Komma und nicht ein Semikolon stehen.


In etwa so:
buffer2:=Pos(buffer,konvert); Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#28

Re: String mit Hilfe einer Schleife zerteilen und auslesen

  Alt 27. Aug 2007, 17:30


okay danke, *peinlichguck*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 11:15 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