AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String zerlegen und Teile in Integer umwandeln, AsyncPro
Thema durchsuchen
Ansicht
Themen-Optionen

String zerlegen und Teile in Integer umwandeln, AsyncPro

Ein Thema von Spurius · begonnen am 9. Feb 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#1

String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 13:48
Hallo,
ich empfange über RS232 Zeichenketten, die das Format 2-3 Zahlen, : , 1-4Zahlen haben.
Jetzt habe ich versucht, mit dem Quellcode
Delphi-Quellcode:
procedure TForm1.signale;
var i,j,k,nummer_i,wert_i: integer;
    nummer, wert, input2: string;
begin
 input2 := input;
 i := 0;
 j := 0;
 k := 0;
 i := pos(':', input2);
 for j := i + 1 to length(input2) do
 wert := wert + input2[j];

 memo1.Lines.Add(input2);
  showmessage(wert);
    nummer_i := strtoint(wert);
    //wert_i := strtoint(wert);
// paintbox1.Canvas.MoveTo(round(arccos((nummer_i-49)*3861/(Wert_i-37)))*8,8*round(arcsin((nummer_i-49)*3861/(Wert_i-37))));
// paintbox1.Canvas.Pixels[round(arccos((nummer_i-49)*3861/(Wert_i-37)))*8,8*round(arcsin((nummer_i-49)*3861/(Wert_i-37)))] := clred;
 memo2.Lines.Add(wert);
end;
die vorderen Zahlen und die hinteren Zahlen jeweils in einen String zu kopieren. Wenn ich dann z.B. den String "Wert" in einem Memo anzeige, klappt das auch, aber wenn ich ihn in einen Integer umwandeln will, bekomme ich die Meldung :

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt signalp.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: ''46
' ist kein gültiger Integerwert'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Habt ihr eine Idee, wo da der Fehler liegt?
Gruß
Spurius
  Mit Zitat antworten Zitat
roedel

Registriert seit: 8. Feb 2006
Ort: Senftenberg
31 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:22
Hallo,
mich würde interessieren was das werden soll.
Und was ist ein RS232 //oder wie das ding heißt

Wenn du zu einen String erzeugst, indem du in einer Schleife Teilstrings dazu addierst, dann sollte der String vorher am besten leer sein oder zumindest einen klar definierten Wert haben.

Wenn du einer Variablen keinen Wert zuweist, dann hat sie immer noch den Inhalt, der schon im Speicher stand, als sie angelegt wurde.
Übrigens liest du mit Code nur die Zahlen nach dem ':' ein.

Gruß Roedel
Steh' zu dem was du tust oder lass' es!
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#3

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:30
Hi,
mit RS232 meinte ich die serielle Schnittstelle. Ich habe auch versucht, eine normale Zahlenfolge ohne ":" zu schicken, auch die kam an, aber die Umwandlung nach Integer geht auch da nicht.
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#4

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:37
evtl. haste ja nach der zehl noch n leerzeichen/sonderzeichen?
schau doch mal wie lange deine strings sind und ob das mit der länge der zahl übereinstimmt.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#5

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:45
Ich würde den String mit Copy() zerlegen - geht besser.

Delphi-Quellcode:
...
var VordereZahl, HintereZahl: string;
...
j := pos(':',input2);

if j <> 0 then begin
  VordereZahl := Copy(input2,1,j); // Alles vor ":" kopieren
  HintereZahl := Copy(input2,j+1,length(Input2)-j); // Alles nach ":" kopieren
end else begin
  ShowMessage('Kein ":" gefunden!');
end;
(Vorsicht - Code wurde gerade on-the-fly von Brain 1.0 generiert! Evtl. mit den Copy-Parametern rumspielen)
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#6

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:49
Zitat von H4ndy:
Ich würde den String mit Copy() zerlegen - geht besser.

  VordereZahl := Copy(input2,1,j); // Alles vor ":" kopieren
lieber j-1 ... oder?

  VordereZahl := Copy(input2,1,j-1); // Alles vor ":" kopieren ach ja ... ich hatte das mir zusammengebastelt ...
Delphi-Quellcode:
j := pos(':',input2);
for i := 1 to j-1 do zahl1 := zahl1+input2[i];
for i := j+1 to Length(input2) do zahl2 := zahl2+input2[i];
aber Copy ist schon n stück feiner!
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#7

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:50
Hallo,
also bei einer 3-stelligen Zahl zeigt er 5 als Länge an
HyperTerminal Listet die Zahlen untereinander, bei mir sind aber Leerzeilen dazwischen.
Hast du ne Idee wie ich das lösen kann?
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#8

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:53
@TeronG
Danke für die Korrektur - passiert halt wenn mal fix was aussen Kopf schreibt ^^

@Spurius
Probiere mal trim(input2);.
Kann sein, dass noch unnötige Leer- und Steuerzeichen davor oder dahinter liegen.
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 15:58
Wenn Leerzeichen dazwischen sind hilft trim nicht, da würde ich StringReplace nutzen.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#10

Re: String zerlegen und Teile in Integer umwandeln, AsyncPro

  Alt 9. Feb 2006, 16:01
Hi,
also hinten scheint zumindest das Ascii-Zeichen mit der Nummer 13 angehängt zu sein
http://www.manderby.com/mandalex/a/ascii.php
Also kann ich doch trim nutzen oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz