Autor Beitrag
darkdester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:03 
Ok sollte ja neues topic machen wenn ichs net kapier^^.

Ok ich bitte freundlcih das mit jemand ncohmal das mit den Asccicode erklärt.

Ich will mehrere buchstaben-zahlenkombis in asciicode umwandeln.

und dann weider zurück

wie mach ich das?


ihr wäre ecuh sehr sehr dankbar

1000 dank im voraus

MFG darkdester
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:13 
Das machst du mit den beiden Funktionen ORD und CHR. ORD wandelt Buchstaben in ihre ASCII-Codierung um (ShortInt bzw. Byte) und CHR macht das Gegenteil.

kleines Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var 
  x: String;
  y: Array[0..255of Integer;
  i: Integer;

begin
  x:='Hallo, du da!!';
  for i:=Low(x) to High(x) do
    y[i]:=ORD(x[i]);
end;

Danach hast du die einzelnen Buchstaben des Strings x als ShortInt- (Byte-) Werte in dem Array y liegen. Low(x) und High(x) stehen für das erste bzw. das letzte Element des Strings. Alternativ kannst du schreiben:

ausblenden Delphi-Quelltext
1:
for i:=1 to Length(x) do					


andersrum:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var 
  x: String;
  y: Array[0..255of Integer;
  i: Integer;

begin
  x:='';
  for i:=Low(y) to High(y) do
    x:=x+CHR(y[i]);
  ShowMessage(x);
end;

Das schreibt die ShortInt-Werte aus dem Array wieder zurück in den String x und zeigt dir danach ne MessageBox mit dem String.

Das Array hab ich jetzt mal nicht dynamisch gemacht, sondern ihm zur Vereinfachung eine feste Länge zugewiesen.


Zuletzt bearbeitet von Luzzifus am Fr 22.10.04 18:53, insgesamt 2-mal bearbeitet
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:19 
danke mal sehn obs klappt wie ich das will
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 22.10.04 17:20 
Du beziehst dich vermutlich auf die Frage, was die Chr-Funktion so macht.
Diese Funktion erwartet als Argument eine Zahl vom Type Byte.
Das Resultat der Funktion ist dann ein Zeichen (Type Char).
ausblenden Delphi-Quelltext
1:
  ShowMessage(Chr(65));					


Das Beispiel zeigt den Buchstabe 'A', da der ASCII-Wert von 'A' gleich 65 ist.

Irgendwelche Buchstaben kannst du nicht als Argument übergeben.

Der umgekehrte Weg geht mit der Ord-Funktion
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:27 
ach nochwas:

Da du ja meinen Hinweis im anderen Thread ignoriert hast, dich vielleicht erst einmal ein bisschen zu belesen, was Delphi betrifft, hier mal zwei Links:

www.delphi-tutorials.de/
www.delphi-source.de/tutorials/

Da gibt's jeweils gute Einsteiger-Tutorials, die die allermeisten deiner Fragen sicher beantworten können und dir zusätzlich einfach ein gewisses Grundwissen zur Programmierung mit Object-Pascal und Delphi vermitteln können.
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:31 
gibts bei den array ne weiten begrenzung?
weil beim string musste ich schon sehn max 255 zeichen -.-
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:35 
Beim Array gibt's keine Begrenzung. Wenn es sehr lang werden soll, würd ich aber empfehlen es dynamisch zu machen (also keine feste Länge), ganz einfach damit nicht unnötig Speicherplatz verschwendet wird.

Ein ShortString ist auf 255 Zeichen beschränkt, ein normaler String nicht. Es gibt ausserdem noch AnsiString (2^31 ASCII-Zeichen) und WideString (2^31 Unicode Zeichen).


Zuletzt bearbeitet von Luzzifus am Fr 22.10.04 17:46, insgesamt 2-mal bearbeitet
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 22.10.04 17:38 
Folgendes ist freundlich gemeint und soll nicht unfair sein:
Bitte lies doch erst die OH. Wenn du es dann nicht verstehst, wird dir sicher geholfen. Das was du fragst, ist Basis-Wissen. Nimm doch unsere Ratschläge an und lies die Tutorials.

Zu deiner Frage:
Strings sind NICHT auf 255 Zeichen begrenzt.
Bei einem Array ist es eine Frage des Speichers.
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:41 
jasocul hat folgendes geschrieben:
Folgendes ist freundlich gemeint und soll nicht unfair sein:
Bitte lies doch erst die OH. Wenn du es dann nicht verstehst, wird dir sicher geholfen. Das was du fragst, ist Basis-Wissen. Nimm doch unsere Ratschläge an und lies die Tutorials.

Zu deiner Frage:
Strings sind NICHT auf 255 Zeichen begrenzt.
Bei einem Array ist es eine Frage des Speichers.


udn weiso kam dann fehler: strin-literale können nur 255 zeichen enthalten?


anaj egal ich les tuts nur hab ich ka zeit alles per ahnd zu suchen

andere frage die steht bestimmt ner so im tut

wie les ich nun das komplette array aus?


EDIT:habs gefunden xD


Zuletzt bearbeitet von darkdester am Fr 22.10.04 17:43, insgesamt 1-mal bearbeitet
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:41 
jasocul hat folgendes geschrieben:
Zu deiner Frage:
Strings sind NICHT auf 255 Zeichen begrenzt.

Achja stimmt, das war der ShortString der auf 255 Zeichen begrenzt ist. Sorry dafür.. ^^ (ich ändere das oben besser mal..)

Zitat:
andere frage die steht bestimmt ner so im tut
wie les ich nun das komplette array aus?

Stimmt die steht so nicht im Tutorial. Aber Programmieren ist ein wenig mit Kreativität verbunden und wenn du die ersten zwei bis drei Kapitel gelesen hast kannst du die Frage selbst beantworten.

Ausserdem habe ich das oben schon gemacht, ich habe nämlich mittels einer FOR-SCHLEIFE das GESAMTE ARRAY in Buchstaben umgewandelt und in den String geschrieben. :wink:
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:47 
ehm weil ich das ( www.delphi-source.de/tipps/sprache/?id=163 ) gefunden hab ne frage

mein delphi erkennt diese SumInt net als befehl Oo
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:49 
Wahrscheinlich hast du vergessen, die Unit Math in die uses zu schreiben (steht in der ersten Zeile des Tipps).
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 17:52 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
x:='Hallo, du da!!';     //löschen
  for i:=0 to Length(x)-1 do   //löschen
    y[i]:=ORD(x[i]);      //löschen
    summe:=SumInt(y);
    Memo2.Text:=InttoStr(summe);


so DAS plus das math oben müsste doch stimmen?

jetzt gibts en integer overflow oda so , integerüberlauf...

och man ><

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.


Zuletzt bearbeitet von darkdester am Fr 22.10.04 17:57, insgesamt 1-mal bearbeitet
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 17:57 
Das Problem an der Stelle ist dass das Array nicht dynamisch ist, sondern die feste Länge 256 hat. Und da du's sicher nicht initialisiert hast, wird der komplette Speichermüll der in den nicht zugewiesenen Feldern des Arrays steht, mit aufsummiert.

schreibe mal das hier vor die Stelle wo du Zahlen in das Array schreibst:
ausblenden Delphi-Quelltext
1:
2:
for i:=Low(y) to High(y) do
  y[i]:=0;

Dann sollte das nicht mehr passieren.
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 18:05 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
x:='Hallo, du da!!';     //löschen
  for i:=Low(y) to High(y) do
  y[i]:=0;
  for i:=0 to Length(x)-1 do   //löschen
    y[i]:=ORD(x[i]);      //löschen
    summe:=SumInt(y);
    Memo2.Text:=InttoStr(summe);



es geht aba er gibt mir nur ne 4 stellige zahl aus O.o

boah ich kann net mehr ><


edit: bin an lösung dran

ich kann das prob mit dem integer string addieren net lösen der solls ja net addieren <<
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 18:10 
Ja vielleicht ist deine Summe halt nur vierstellig.. :twisted:

Falls nicht gibt mal den restlichen Quelltext her, mit dem du Zahlen ins Array schreibst.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 22.10.04 18:16 
Ist x ein String? Dann solltest Du beachten, dass die Indizierung eines Strings bei 1 und nicht bei 0 beginnt!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 18:24 
Luzzifus hat folgendes geschrieben:
Ja vielleicht ist deine Summe halt nur vierstellig.. :twisted:

Falls nicht gibt mal den restlichen Quelltext her, mit dem du Zahlen ins Array schreibst.


allein "Hallo" ergibt schon mehr als 4 stellen in ascii code <<

indizierung x.X?

x ist ein string



ok hier nochmal bisheriger code

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var         //löschen
x: String;                    //löschen
  y: Array[0..2000of Integer;    //löschen
  i: Integer;                   //löschen
   summe: integer;
begin
x:='Hallo, du da!!';     //löschen
  for i:=Low(y) to High(y) do
  y[i]:=0;
  for i:=0 to Length(x)-1 do   //löschen
    y[i]:=ORD(x[i]);      //löschen
    summe:=InttoStr(SumInt(y));
    Memo2.Text:=InttoStr(summe);

end;



problem: ausgabe von 1051 obwohl FALSCH
Luzzifus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 200

Win2K
D6 Prof
BeitragVerfasst: Fr 22.10.04 18:34 
SumInt hängt nicht die Zahlen aneinander sondern addiert sie.

ich war so frei und hab das für 'Hallo, du da!!' mal von Hand ausgerechnet:
72+97+108+108+111+44+32+100+117+32+100+98+33+33 = 1085

Wo bitte ist das nicht vierstellig? :wink:


Zuletzt bearbeitet von Luzzifus am Fr 22.10.04 18:39, insgesamt 2-mal bearbeitet
darkdester Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 22.10.04 18:36 
Luzzifus hat folgendes geschrieben:
SumInt hängt nicht die Zahlen aneinander sondern addiert sie.

ich war so frei und hab das für 'Hallo, du da!!' mal von Hand ausgerechnet:
72+97+108+108+111+44+32+100+117+32+100+98+33+33 = 1085

Wo bitte ist das nicht vierstellig? :wink:


ich wills aba NICHT addieren er soll mir die asciiwerte hintereinander schreiben

geht das irgendwie??
da kommt derwing 1051 raus :roll: