| Autor |
Beitrag |
sashs
      
Beiträge: 22
|
Verfasst: So 01.04.12 13:42
Hallo,
ist es bei Delphi möglich einfach mit einem Character-Pointer durch einen String zu navigieren?
Gruß
Sascha
Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am So 01.04.2012 um 14:41
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: So 01.04.12 14:57
Du meinst z.B. s[x] := 'A' ??
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 01.04.12 15:02
Ich glaube, er meint sowas:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var s: string; p: PChar; s := 'Hallo Welt'; p := PChar(s);
ShowMessage(p); p := p + 6; ShowMessage(p); |
Ja, das geht. 
_________________ We are, we were and will not be.
|
|
sashs 
      
Beiträge: 22
|
Verfasst: So 01.04.12 16:39
Ich hab noch ganz nachgeschaut, aber das von Gausi scheint das zu sein was ich brauche.
Ich wollte eigentlich noch dazu schreiben, dass ich es so meine, wie in c/c++.
Danke.
Gruß
Sascha
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 01.04.12 20:33
Es geht, aber du verzichtest auf alle Sicherungsnetze die Delphiprogramme so robust machen.
Wenn du also keine zwingenden Geschwindigkeitsgründe hast, bietet sich der Zugriff per S[index] (siehe bummi) eher an.
Nur so als Anmerkung.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
sashs 
      
Beiträge: 22
|
Verfasst: Fr 06.04.12 12:39
Wenn ich auf die Stelle zugreifen möchte, mache ich das ja wie bummi gesagt hat.
Es ist aber wichtig für mich, dass ich durch den String durchlaufen kann. Also ich arbeite den String von vorne nach hinten durch und das was schon abgearbeitet ist brauche ich nicht mehr.
Deshalb wollte ich gerne mit einem Zeiger durchlaufen, weil dieser dann nur noch den unbearbeiteten String hält.
Ok, ich hätte es auch komplett mit bummis Methode machen können. Aber mit dem Zeiger find ich persönlich es schöner.
Gruß
Sascha
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Fr 06.04.12 14:44
sashs hat folgendes geschrieben : | | Deshalb wollte ich gerne mit einem Zeiger durchlaufen, weil dieser dann nur noch den unbearbeiteten String hält. |
...was nur bei einfach verketteten Listen mit Garbage Collection funktioniert. Also sicher nicht in Delphi, da bräuchte man schon Haskell  .
_________________ >λ=
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 06.04.12 15:38
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Fr 06.04.12 18:30
jaenicke hat folgendes geschrieben : | | Wie meinst du das? |
Ich habe "das was schon abgearbeitet ist brauche ich nicht mehr" und "hält nur noch den unbearbeiteten String" im Sinn von Speichermanagement verstanden, aber vielleicht war es auch anders gemeint.
_________________ >λ=
|
|
sashs 
      
Beiträge: 22
|
Verfasst: Fr 06.04.12 19:52
Hallo,
Kha hat folgendes geschrieben : | jaenicke hat folgendes geschrieben : | | Wie meinst du das? | Ich habe "das was schon abgearbeitet ist brauche ich nicht mehr" und "hält nur noch den unbearbeiteten String" im Sinn von Speichermanagement verstanden, aber vielleicht war es auch anders gemeint. |
Ich habe mich vielleicht missverständlich ausgedrückt. Es ging mir nicht direkt um den Speicher, sondern um den "Inhalt" der Variablen.
Gruß
Sascha
|
|