Autor Beitrag
Basti1207
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 05.10.08 12:01 
Guten Tag,
Ich wollte mal wissen ob es möglich ist, aus einem String wie diesen hier:
Zitat:
Random(466, 496), Random(176, 206)

466 als x1, 496 als x2, 176 als y1 und 206 als y2 automatisch auslesbar ist.

mfg Basti
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 12:37 
Erstmal :welcome: ;-)

Zur Frage: Ja :mrgreen:

Wolltest du auch wissen wie? ;-)
1. Kopiere ggf. den String in einen temporären String
2. Suche mit Pos nach dem ersten '(', kopiere mit Copy alles bis zum ersten ',' und wandele es mit StrToInt in einen Integerwert um
3. Lösche mit Delete alles bis zum ',', inklusive des Kommas und ggf. des Leerzeichens
4. Kopiere alles bis zum ')' und wandele es in einen Integerwert um
5. Lösche alles bis zum '(' inklusive
6. Copy bis zum ','
...
Basti1207 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 05.10.08 13:02 
Hmm ja also erstmal schonmal danke ;)
Ich muss aber leider sagen das ich erst seit ca 5 Wochen in der Schule Programmiern habe und wir uns bisher eher andere sachen behandelt haben..
Naja, jedenfalls hab ich mal versucht deine Anleitung mit hilfe von Google durchzugehen, doch schon bei der ersten Anweisung scheiterts.. :/

function Pos(Substr: string; S: string): Integer;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
var
tempstring : string;
stelle : integer;
begin
tempstring := Edit14.Text;
stelle := Pos((''(''); tempstring);
end;

Soll laut Delphi ein Operator oder Semikolon fehlen..
Da es beim ersten schon scheitert wäre es furchbar nett wenn du mir den rest vielleicht als Quellcode schreiben könntest wenn du mal ne ruhige Minute hast. Oder eben einfach wie man "copy", "delete" und "pos" anwendet :)

mfg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 13:08 
Ich empfehle dir dringend
www.christian-stelzm...=tutorials_crashkurs
bzw.
www.christian-stelzm...shkurs_reloaded.html

Dann zum Fehler:
user profile iconBasti1207 hat folgendes geschrieben Zum zitierten Posting springen:
function Pos(Substr: string; S: string): Integer;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
var
tempstring : string;
stelle : integer;
begin
tempstring := Edit14.Text;
stelle := Pos((''(''); tempstring);
end;

Soll laut Delphi ein Operator oder Semikolon fehlen..
Also: In der Deklaration steht zwischen den Parametern ein Semikolon, wenn du die Funktion aber aufrufst, dann trennst du die mit Kommata. Dann gehört um einen String nur jeweils ein einfaches Hochkomma vorne und eins hinten. Also:
ausblenden Delphi-Quelltext
1:
stelle := Pos('(', tempstring);					
Und mit dem Wissen bekommst du den Rest vermutlich auch hin ;-). Du hast ja schon an den richtigen Stellen geschaut ;-).
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: So 05.10.08 13:46 
Hi,

anbei ein kleines Projekt, wie man es auch machen kann.

Aber Achtung: War in 10 Min getippt, da ist noch ordentlich Optimierungspotential vorhanden.
Einloggen, um Attachments anzusehen!
Jerk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 251

Vista Ultimate, Ubuntu
Turbo Delphi 2006
BeitragVerfasst: So 05.10.08 13:49 
Mach es lieber mit einer Zählerschleife. Der startwert ist 1 und der Entwert ist die Länge vom String.

Dann vergleichst du das Zeichen des String an der Stelle der Zählervariable ob es eine Zahl ist.

Wenn es eine Zahl ist mekrst du dir die Position.

Sobald dann die Schleife nichtZahl stößt Kopierst du von der Gemerkten Poisition bis zur Zähjlervariable - 1 den String und hast somit deine Zahl.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 13:50 
@user profile iconDie Muhkuh: Und du meinst das ist verständlich, wenn es schon bei einfacheren Versionen nicht so einfach für ihn ist? ;-)
Abgesehen davon, dass es so noch schwieriger werden dürfte, das ursprüngliche Problem zu lösen, nämlich die Zahlen in Variablen zu bekommen ;-).
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: So 05.10.08 13:55 
Hi,

stimmt ja. Da war ja noch was ;-)

Es geht ja nicht drum, dass ich gleich seine Aufgabe löse, sondern wie man es mit Schleifen noch lösen kann.

Das Gefummel mit Pos ist schließlich nicht auch viel einfacher / besser zu lesen.

Bei Interesse könnte ich es noch etwas umschreiben, um es direkt in die Variablen speichern zu können.
Jerk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 251

Vista Ultimate, Ubuntu
Turbo Delphi 2006
BeitragVerfasst: So 05.10.08 14:07 
Ich denke das Interesse ist bei ihm vorhanden, eine fertige LKösung zu bekommen, aber wo ist dann der Lerneffekt :p
Basti1207 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 05.10.08 14:14 
soderle.. habs jetzt mit ein bisschen probieren hinbekommen..:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
procedure TForm1.Button2Click(Sender: TObject);
var
tempstring : string;
stelle : integer;
x1 : string;
x2 : string;
y1 : string;
y2 : string;
begin
tempstring := Edit14.Text;
// x1
stelle := Pos('(', tempstring);
Delete(tempstring, 1, stelle);
stelle := Pos(',', tempstring);
x1 := Copy(tempstring, 1, stelle-1);

// x2
stelle := Pos(',', tempstring);
Delete(tempstring, 1, stelle+1);
x2 := Copy(tempstring, 1, stelle-1);

// y1
stelle := Pos('(', tempstring);
Delete(tempstring, 1, stelle);
stelle := Pos(',', tempstring);
y1 := Copy(tempstring, 1, stelle-1);

// y2
stelle := Pos(',', tempstring);
Delete(tempstring, 1, stelle+1);
y2 := Copy(tempstring, 1, stelle-1);

Edit5.Text := x1;
Edit6.Text := y1;
Edit10.Text := x2;
Edit11.Text := y2;

end;

Is zwar wahrscheinlich ein bisschen umständlich gemacht, aber hauptsache es funktioniert
Danke nochmal ;)

Wer sich für den Rest des Programmes interessiert (Damit kann man Koordinaten einer Auflösung in die Koordinaten einer anderen Auflösung umwandeln. Dazu eben eine Einlese/Ausgabe funktion für das Programm "Auto It".), der kann mal in den Anhang schauen!

mfg Basti
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.10.08 14:23 
Nach ein paar Wochen Delphi ist es auch egal, ob es umständlich ist. Das Entscheidende ist, dass du es mit den Hilfen selbst hinbekommen und einfach etwas ausprobiert hast, und das ist schon einiges wert für das weitere Lernen von Delphi. ;-)