Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die ersten Zeichen eines String "herausholen" (https://www.delphipraxis.net/93962-die-ersten-zeichen-eines-string-herausholen.html)

bonsaikatze 13. Jun 2007 21:12


Die ersten Zeichen eines String "herausholen"
 
Wie kann ich denn nur die ertsen Zeichen eines Strings "herausholen" und den rest löschen?

Nikolas 13. Jun 2007 21:13

Re: Die ersten Zeichen eines String "herausholen"
 
hmmm. versuchs mal mit Funktionen, die die schlauen entwickler 'Copy' und 'delete' genannt haben.
Ein bischen selbst suchen, sollte echt drin sein, wofür gibts denn hier eine tolle SUCHFUNKTION.

fwsp 13. Jun 2007 21:14

Re: Die ersten Zeichen eines String "herausholen"
 
Delphi-Quellcode:
var
  s: string
  x: Integer;
...
   x := beliebiger wert;
   Setlength(s, x);

HalloDu 13. Jun 2007 21:17

Re: Die ersten Zeichen eines String "herausholen"
 
Und man kann ja auch mal die Delphi-Hilfe bemühen. Ich finde sowas soll schon drin sein zu dem es wenn ich micht nicht irre eine Kategorie für Stringfunktionen gibt, die ja alle gut Beschrieben sind.
Oder du machst das einfach so:
Delphi-Quellcode:
StringXYZ := 'abc';
CharXYZ := StringXYZ[0];
//CharXYZ hat dann den wert 'a'
Dann behandelst du den praktisch wie einen Array.

fLaSh11 13. Jun 2007 21:20

Re: Die ersten Zeichen eines String "herausholen"
 
@HalloDu:

Ein String fängt immer beim Index 1 an ;)

HalloDu 13. Jun 2007 21:25

Re: Die ersten Zeichen eines String "herausholen"
 
Ja sry mein Fehler, dieser Mist mit 0 oder 1 als Anfang; Ich schmeis das immer durcheinander. :oops: Schrecklich, könnten nicht alle mit 0 anfangen :mrgreen:.

idontwantaname 13. Jun 2007 21:27

Re: Die ersten Zeichen eines String "herausholen"
 
Beim Index 0 ist/war glaube ich einst die Länge des Strings wenn ich mich nicht irre :gruebel:

Win32.API 13. Jun 2007 22:00

Re: Die ersten Zeichen eines String "herausholen"
 
Das kann ja so nicht ganz stimmen, szTest[0] ist 1 byte, als dezimal zahl maximal 256, und delphistrings koennen ja bekantlich bis zu 2GB groß sein (:.
Was dort abgelegt ist kann ich aber leider auch nicht genau beantworten, vieleicht ist die laenge vor dem string gespeichert - szTest[-1 ..]

Nikolas 13. Jun 2007 22:03

Re: Die ersten Zeichen eines String "herausholen"
 
Da liegt ja nicht der komplette string, sondern nur das erste Zeichen drin. Und für ein einzelnes Zeichen sind 1Byte genug.

Win32.API 13. Jun 2007 22:07

Re: Die ersten Zeichen eines String "herausholen"
 
Meine Aussage bezog sich auf die von idontwantaname, und in einem byte ist die groeßte zahl die man speichern kann - 256, also koennte der string ja maximal 256 zeichen lang sein. Delphistrings koennen aber bizu 2GB groß sein.

DGL-luke 13. Jun 2007 22:18

Re: Die ersten Zeichen eines String "herausholen"
 
wie gesagt, das war mal so. da is irgendwas, wo man jedenfalls nicht hindarf.

Nikolas 13. Jun 2007 22:18

Re: Die ersten Zeichen eines String "herausholen"
 
aso, da hab ich dich falsch verstanden, tschuldigung.

xaromz 13. Jun 2007 22:19

Re: Die ersten Zeichen eines String "herausholen"
 
Hallo,
Zitat:

Zitat von Win32.API
Meine Aussage bezog sich auf die von idontwantaname, und in einem byte ist die groeßte zahl die man speichern kann - 256, also koennte der string ja maximal 256 zeichen lang sein. Delphistrings koennen aber bizu 2GB groß sein.

Es geht hier aber um den alten ShortString. Der hatte im nullten Byte die Länge und in den Bytes eins bis maximal 255 die Zeichen.

Gruß
xaromz

Lannes 13. Jun 2007 22:24

Re: Die ersten Zeichen eines String "herausholen"
 
Hallo,

ja, und der String wird durch das Nullzeichen (ANSI-Wert #0) begrenzt, und daraus resultiert die Länge.

Win32.API 13. Jun 2007 22:27

Re: Die ersten Zeichen eines String "herausholen"
 
Ups, habe nirgends etwas von ShortString gelesen. Aus intresse habe ich mal den debugger angemacht und was ich bis jetzt rausbekommen habe ist:

szTest ist ein pointer auf ein struct, in dem unteranderen die laenger und der text string gespeichert sind. Wenn jemand etwas genaueres weiss wuerde ich mich ueber infos freuen, danke.

@Lannes, das ist bei C-Strings der fall, aber nicht bei delphistrings.

Zacherl 13. Jun 2007 22:39

Re: Die ersten Zeichen eines String "herausholen"
 
Zitat:

Zitat von Lannes
Hallo,

ja, und der String wird durch das Nullzeichen (ANSI-Wert #0) begrenzt, und daraus resultiert die Länge.

Zitat:

Zitat von Win32.API
@Lannes, das ist bei C-Strings der fall, aber nicht bei delphistrings.

Wollt grade sagen .. hab nämlich mal Binärdateien in Strings geladen. Das hat wunderbar funktioniert. Wäre #0 der Terminator, könnte das ja nicht gehen.

Lannes 13. Jun 2007 22:58

Re: Die ersten Zeichen eines String "herausholen"
 
Hallo,

sollte nur eine kurze einfache Erläuterung sein.
... hätte ich geschrieben "daraus resultiert Length()", dann ...

Delphi-Quellcode:
var s : String;
begin
  s := 'Hallo';
  s[3] := #0;
  showmessage(IntToStr(Length(s))); //= 5
  showmessage(s);                   //= 'Ha'
Kann man vermutlich ein Buch drüber schreiben. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz