 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| gaisser |
#1| Verfasst am: 03.07.2008, 16:44 Titel: Hochzählen Verständnisfrage |
 |
 |
 |
|
Mitglied Alter: 32 Status: offline Beiträge: 18 angemeldet: 07.09.2003 Wohnort: Dotternhausen Delphi 7 Enterprise

|
Sprache: Delphi (Win32) Hallo,
ich bin am verzeifeln.
will eigentlich nur einen Wert erhöhen, bekomme aber immer Probleme wenn der letzte Char eine 9 oder ein z ist...
Ich poste mal meine function, vielleicht findet einer den Fehler gleich
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · 38
| function Zaehlen(s:String):String;
var C:Char;
Zahl:String;
i:integer;
begin
if s<>'' then begin
i:=Length(s);
c:=S[i];
//Wenn noch ein hinzugezählt werden kann
if c in ['0'..'8','A'..'Y','a'..'y'] then begin
inc(c);
Zahl:=C;
result:=copy(S,1,i-1)+ C;
end;
//Wenn Z oder 0
while c in ['9'] do begin
if c in ['9'] then
begin
Zahl:=Zahl+'0';
end;
dec(i);
c:=S[i];
result:=copy(s,1,i)+Zahl;
end;
while c in ['Z','z'] do begin
if c in ['Z'] then begin
zahl:=Zahl+'A';
end;
if c in ['z'] then begin
zahl:=Zahl+'a';
end;
dec(i);
c:=S[i];
result:=copy(s,1,i)+Zahl;
end;
end;
end; |
| |
 Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!! |
 |
|
|
|
| |
| toms |
#2| Verfasst am: 03.07.2008, 16:51 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
sehr aktives Mitglied Alter: 30 Status: offline Beiträge: 3.003 angemeldet: 10.06.2002 Wohnort: Delphi-Land Delphi 2005 Professional

|
Hallo,
Könntest du vielleicht ein wenig beschreiben, was genau die Funktion machen sollte? |
 NEU: WinSpy 2008 - Der Fenster Spion (Version 2.0.2, 08.05.2008) |
 |
|
|
|
| |
| littleDave |
#3| Verfasst am: 03.07.2008, 16:55 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
sehr aktives Mitglied Alter: 22 Status: offline Beiträge: 217 angemeldet: 27.04.2006 Wohnort: München Delphi 7 Professional

|
Mir schaut das ganze etwas komisch aus. Was willst du mit den Quelltext bezwecken? Versuch mal folgende Tabelle für mich zu füllen, damit ich versteh, was du meinst
| Code: | markieren | Eingabe Ausgabe Erwartete Ausgabe
---------------------------------------------------
'123' '124' ???
'abc' 'abd' ???
'xyz' 'xya' ???
'789' '780' ??? |
|
[Edit]Da war wohl wer schneller [/Edit] |
 | Delphi-Quellcode: | markieren | | <!-- #1--> in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0 |
|
Zuletzt bearbeitet von littleDave am 03.07.2008, 16:56, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| gaisser |
#4| Verfasst am: 03.07.2008, 16:57 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
Mitglied Alter: 32 Status: offline Beiträge: 18 angemeldet: 07.09.2003 Wohnort: Dotternhausen Delphi 7 Enterprise

|
OK,
ich habe ein EditFeld indem ein Wert immer um eins hochzezähöt werden soll:
Bsp:
1009 soll 1010 sein
100Z soll 101A sein
Bei den Werten 0 bis 8 und a bis y klappt das, nur nicht wenn er den vorherigen Wert auch noch zählen soll.
Es sollte einfach Alphanumerisch gezählt werden können.... |
 Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!! |
 |
|
|
|
| |
| DeddyH |
#5| Verfasst am: 03.07.2008, 17:01 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
"Rüsselmops" ;-) Alter: 42 Status: offline Beiträge: 6.654 angemeldet: 17.09.2006 Wohnort: Schweina/Thüringen Delphi 2007 Professional

|
Ich würde den String zunächst in eine Zahl wandeln, inkrementieren und dann formatiert ausgeben.
[edit] Ach nee, da käme ein anderes Ergebnis heraus, sry. [/edit] |
 10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
Zuletzt bearbeitet von DeddyH am 03.07.2008, 17:02, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| gaisser |
#6| Verfasst am: 03.07.2008, 17:03 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
Mitglied Alter: 32 Status: offline Beiträge: 18 angemeldet: 07.09.2003 Wohnort: Dotternhausen Delphi 7 Enterprise

|
Häh
wie meinste das????? |
 Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!! |
 |
|
|
|
| |
| gammatester |
#7| Verfasst am: 03.07.2008, 17:07 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 148 angemeldet: 06.12.2005

|
Inkrementiere jedes s[i] separat, wenn s[1] überlauft, pack eine 1 bzw ein a vor den String.
Gruß Gammatester |
|
 |
|
|
|
| |
| littleDave |
#8| Verfasst am: 03.07.2008, 17:09 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
sehr aktives Mitglied Alter: 22 Status: offline Beiträge: 217 angemeldet: 27.04.2006 Wohnort: München Delphi 7 Professional

|
Ich hab mal den Quelltext umgeschrieben, so dass deine beiden Beispiele funktionieren. Ob alles wirklich so funktioniert, wie du es willst, weiß ich nicht:
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35
| function Zaehlen(s: string): string;
var c: char;
i: integer;
begin
if s <> '' then
begin
i := length(s);
c := s[i];
if c in ['0'..'8', 'A'..'Y', 'a'..'y'] then
begin
inc(c);
s[i] := c;
end;
c := s[i];
while c in ['9', 'z', 'Z'] do
begin
if c in ['z', 'Z'] then
s[i] := 'A'
else
s[i] := '0';
dec(i);
if i < 1 then
break; // da musst du noch etwas rumbasteln, dass auch '999' usw. funktioniert
c := s[i];
if not (c in ['9', 'z', 'Z']) then
begin
inc(c);
s[i] := c;
break;
end;
end;
end;
result := s;
end; |
|
(PS: deine Codeformatierung ist nicht ganz optimal ^^, musste es erst umformatieren um die Funktionalität zu erkennen) |
 | Delphi-Quellcode: | markieren | | <!-- #1--> in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0 |
|
Zuletzt bearbeitet von littleDave am 03.07.2008, 17:12, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| gaisser |
#9| Verfasst am: 03.07.2008, 17:13 Titel: Re: Hochzählen Verständnisfrage |
 |
 |
 |
|
Mitglied Alter: 32 Status: offline Beiträge: 18 angemeldet: 07.09.2003 Wohnort: Dotternhausen Delphi 7 Enterprise

|
Wow danke... haste mir schwer weitergeholfen |
 Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!! |
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |