Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine Variable unterteilen?! (https://www.delphipraxis.net/60901-eine-variable-unterteilen.html)

ghost007 13. Jan 2006 21:59


Eine Variable unterteilen?!
 
Hallo,
ich habe volgendes problem,
ich bekomme durch mein programm eine veriable z.B.3 häuser also integer + leerzeichen + string
und ich möchte jetzt die eine variable "3 häuser" aufteilen in variable x und y also soll x den integerwert annehmen und y den stringwert, wie kann ich so etwas realisieren?

P.S.Ich arbeite mit Delphi 7

malo 13. Jan 2006 22:05

Re: Eine Variable unterteilen?!
 
Also das wichtigste wird wohl die Funktion Delphi-Referenz durchsuchenStrToInt sein, um eine Stringvariable in eine Integervariable zu konvertieren.

Dann könntest du entweder per Delphi-Referenz durchsuchenPos das Leerzeichen ermitteln und dann mit Delphi-Referenz durchsuchenCopy die einzelnen Teilstrings in Variablen speichern, oder mithilfe einer Delphi-Referenz durchsuchenTStringList und Delphi-Referenz durchsuchenDelimitedText den String aufzuteilen ;)

Luckie 13. Jan 2006 22:06

Re: Eine Variable unterteilen?!
 
explodeexplode.

ghost007 13. Jan 2006 22:09

Re: Eine Variable unterteilen?!
 
also das explode schaut ja schon sehr spannend aus, aber ich wollte eigentlich nich doppelt soviel quelltext schreiben nur wegen der trennung der variable, geht das nicht kürzer?
Könnte mir nicht mal jemand nen "relativ" kurzen quelltext , der funktioniert :P , schreiben?

Danke schon mal

Luckie 13. Jan 2006 22:13

Re: Eine Variable unterteilen?!
 
Die Sichworte hat dir malo doch schon genannt.

ghost007 13. Jan 2006 22:17

Re: Eine Variable unterteilen?!
 
die sagen mir aber nicht wirklich was

SirThornberry 13. Jan 2006 22:19

Re: Eine Variable unterteilen?!
 
zudem ist explode etc. vielleicht etwas lang aber es geht ja auch immer um performance. Sicher gibt es auch kürzere Varianten die eventuell 10 mal langsammer sind. Aber wie luckie schon geschrieben hat wurden bereits stichworte genannt. Desweiteren wird in diesem Forum nicht für andere die Arbeit erledigt sondern geholfen (ansonsten lernst du ja nicht viel wenn dir die fertige funktion vorgesetzt wird). Wenn du also an irgend einer stelle mit deiner funktion nicht weiterkommst poste konkret an welcher stelle und dir wird auch geholfen.

In deinem ersten posting schreibst du:
Zitat:

ich bekomme durch mein programm eine veriable z.B.3 häuser also integer + leerzeichen + string
ist das dann eine Stringvariable (so wie es alle angenommen haben) ein Record etc.? Wie sieht das Format einr solchen Variablen aus (Beispiel) und wer bestimmt das. Wenn du selbst das format bestimmst wäre das schnellste wenn du längenangaben für den String mit speicherst.

Wenn dir die Begriffe/Stichworte nix sagen benutze doch die Hilfe (nicht umsonst ist das Handbuch davor mit dem Tooltip) oder benutz die Suche. Denn so kommt es rüber als ob du nicht viel Eigeninitiative zeigst und nur wartest das jemand für dich das ganze komplett machst. Ein bischen musst du schon selbst machen.

ghost007 13. Jan 2006 22:27

Re: Eine Variable unterteilen?!
 
also , die variable , die ich teilen will ist eine integer variable

Khabarakh 13. Jan 2006 22:28

Re: Eine Variable unterteilen?!
 
Zitat:

Zitat von SirThornberry
zudem ist explode etc. vielleicht etwas lang aber es geht ja auch immer um performance.

Die handgeschriebene Methode per Pos sollte aber schneller sein. Die Stringlist wohl eher langsamer :wink: .

leddl 13. Jan 2006 22:31

Re: Eine Variable unterteilen?!
 
Zitat:

Zitat von ghost007
also , die variable , die ich teilen will ist eine integer variable

Dann steht da aber garantiert nicht "Häuser" drin. :roll:

ghost007 13. Jan 2006 22:41

Re: Eine Variable unterteilen?!
 
ach, ich bin manchmal so "unkonzentriert"
is natürlich ne string variable

Schaedel 14. Jan 2006 03:41

Re: Eine Variable unterteilen?!
 
Dann schau dir mal Copy und Pos an.
Mit den beiden Functionen solltest du es lösen.

Wenn die Anzahl der Häuser immer nur einstellig ist kannst du auf ein einzelnes Stringelement auch mit
Delphi-Quellcode:
Irgendeinstring[1]
zugreifen.

so bekommst du das 1. Zeichen von dem String in dem Fall die Zahl.
:cyclops:

ghost007 14. Jan 2006 09:25

Re: Eine Variable unterteilen?!
 
danke, ich denke das würde mein problem lösen

ghost007 14. Jan 2006 10:54

Re: Eine Variable unterteilen?!
 
so, also ich kann jetzt die erste ziffer/buchstaben auslesen, von der variable, gibt es die möglichkeit von der variable z.b. die erste ziffer/buchstaben zu löschen?
d.h. zuerst:3 häuer
dann: häuser

Khabarakh 14. Jan 2006 11:02

Re: Eine Variable unterteilen?!
 
Dir wurden schon alle Stichwörter genannt. Äquivalent zu Delphi-Referenz durchsuchenCopy kannst du auch Delphi-Referenz durchsuchenDelete benutzen.

luigied 14. Jan 2006 16:08

Re: Eine Variable unterteilen?!
 
Hi zusammen.
Wenn du ein Record machst kannst du ne Integer- und ne String-variable zusammenfassen.
Weiss nich, ob dir das weiterhilft.
zum Bleistift:

type TImobilie = record:
Anzahl: integer;
Gebaeude: string; end;

Wie gesagt: Weiss nich ob dir das weiter hilft, nur: so kannst du die instanzierte Variable, dann auch wieder auslesen. Leider musst du jeden Teil (also zB: imobilie.Anzahl) einzeln zuweisen.

ghost007 14. Jan 2006 21:56

Re: Eine Variable unterteilen?!
 
hm....habe jetzt mal die hilfe von delphi durchgeschaut, kann aber nichts finden, wie kann ich z.b. die erste ziffer/buchstabe der string variablen löschen?

SirThornberry 14. Jan 2006 22:08

Re: Eine Variable unterteilen?!
 
dafür gibt es "delete" aber es geht auch mit copy:
Delphi-Quellcode:
DeinString := copy(DeinString, 2, Length(DeinString) - 1);

ghost007 15. Jan 2006 13:37

Re: Eine Variable unterteilen?!
 
verstehe ich das dann so richtige?

Delphi-Quellcode:
irgendeinstrin[1].delete;

SirThornberry 15. Jan 2006 13:38

Re: Eine Variable unterteilen?!
 
warum schaust du dir nicht die hilfe an??????

ghost007 15. Jan 2006 13:52

Re: Eine Variable unterteilen?!
 
Zitat:

hm....habe jetzt mal die hilfe von delphi durchgeschaut, kann aber nichts finden

SirThornberry 15. Jan 2006 13:54

Re: Eine Variable unterteilen?!
 
dann solltest du mal lernen wie man die hilfe benutzt. Als erstes delete eingeben und dann wird da unter anderem auch "Delete function" angezeigt:
Zitat:

Removes a substring from a string.

Unit

System

Category

string handling routines

Delphi syntax:

procedure Delete(var S: string; Index, Count:Integer);

Description

In Delphi code, Delete removes a substring of Count characters from string S starting with S[Index]. S is a string-type variable. Index and Count are integer-type expressions.

If index is larger than the length of the string or less than 1, no characters are deleted.

If count specifies more characters than remain starting at the index, Delete removes the rest of the string. If count is less than or equal to 0, no characters are deleted.
Und neben der Delphihilfe gibt es auch noch google und die Forensuche

ghost007 15. Jan 2006 15:00

Re: Eine Variable unterteilen?!
 
also, danke für den tipp, aber irgendwie funktioniert das nicht, könntest du mir bitte ein beispiel geben?

Khabarakh 15. Jan 2006 16:23

Re: Eine Variable unterteilen?!
 
Zitat:

Zitat von ghost007
also, danke für den tipp, aber irgendwie funktioniert das nicht, könntest du mir bitte ein beispiel geben?

Dazu gibt es ein wunderschönes Beispiel in der Hilfe.
Zitat:

Und neben der Delphihilfe gibt es auch noch google und die Forensuche

luigied 16. Jan 2006 13:04

Re: Eine Variable unterteilen?!
 
Vielleicht solltest du versuchen die Stringelemente einzeln zu löschen

repeat
For i:=0 to stringlaenge do
deinstring[i]:=deinstring[i+1];
dec(stringlaenge);
until string[1] = ' ';

Bei jedem Durchlauf wird das erste Zeichen deines Strings gelöscht.

Gruß,

stoxx 16. Jan 2006 13:19

Re: Eine Variable unterteilen?!
 
Delphi-Quellcode:
function GetStringNr(const NR : integer; const Value : AnsiString; const delim : char = ';'): Ansistring;
var i, idx : integer;
    iOrd : byte;    
    Res : AnsiString;
    Used : Integer;
begin
  Result := '';
  idx := 1;
  Used := 0;
  SetLength(Res, Length(Value));

  for i := 1 to length(Value) do
  begin
    if Value[i] = delim then
       begin
          inc(IDX);
          continue;
       end;
    If IDX > NR then break;
    if IDX = NR then
     begin
      inc(Used);
      Res[used] := Value[i];
     end;
  end; // von for
   SetLength(Res, Used);
   result := res;
end; // von GetStringNR

Delphi-Quellcode:
Showmessage(GetStringNr(4,'Ich bin ein Satz mit Leerzeichen als Trennung, ' '));

ghost007 16. Jan 2006 16:26

Re: Eine Variable unterteilen?!
 
also, danke an alle, ich habe das problem jetzt gelöst :thumb: :) :witch:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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