Seite 1 von 2
					
				RTrim kürzt nicht
				Verfasst: 06.06.2017 20:33
				von thinkitsimple
				Ich möchte alle Zeichen eines Strings löschen, die ab einem bestimmten Zeichen vorhanden sind.
Hier möchte ich nur den Computer.
Habe RTrim, RemoveString und Trim probiert, komme damit aber nicht zum gewünschten Ziel.
Wie kann ich das realisieren?
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 20:36
				von RSBasic
				Kannst du bitte deinen RTrim-Code posten, der nicht funktioniert?
Du sagst leider auch nicht, welche Zeichen entfernt werden sollen. Willst du "Computer" entfernen oder alle Zeichen (beliebige Zeichen) bis zum Punkt-Zeichen?
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 20:38
				von man-in-black
				Hi, 
guck dir mal stringfield an.
MFG
MIB
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 20:52
				von thinkitsimple
				RSBasic hat geschrieben:Kannst du bitte deinen RTrim-Code posten, der nicht funktioniert?
Du sagst leider auch nicht, welche Zeichen entfernt werden sollen. Willst du "Computer" entfernen oder alle Zeichen (beliebige Zeichen) bis zum Punkt-Zeichen?
Ich möchte .Domain entfernen.
Ich habe folgendes probiert:
Damit wird aber nur der Punkt entfernt. Ich möchte aber alles ab dem Punkt nach rechts entfernen.
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 20:56
				von RSBasic
				Ist dieser String immer gleich? Also immer nur mit einem Punkt? Wenn ja, dann kannst du mit StringField() arbeiten:
Code: Alles auswählen
EnableExplicit
Define device.s = "Computer.Domain"
Debug StringField(device, 1, ".")
Wenn nicht:
Code: Alles auswählen
EnableExplicit
Define device.s = "Computer.Domain"
Debug Mid(device, 1, Len(device)-FindString(ReverseString(device), "."))
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 21:43
				von GPI
				thinkitsimple hat geschrieben:Ich möchte .Domain entfernen.
Ich habe folgendes probiert:
Damit wird aber nur der Punkt entfernt. Ich möchte aber alles ab dem Punkt nach rechts entfernen.
 
Äh, lies dir bitte die Anleitung durch.
Die TRIM-Befehle entfernt alle  Stellen  von anfang/ende, die mit einen bestimmten Zeichen identisch sind. Damit kann man bspw. führende Leerzeichen entfernen, ist sogar der klassische Anwendungsfall.
Ansonsten schau dir mal RSBasics beispiel an, ich nehm für sowas gerne StringField().
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 21:45
				von thinkitsimple
				RSBasic hat geschrieben:Ist dieser String immer gleich? Also immer nur mit einem Punkt? Wenn ja, dann kannst du mit StringField() arbeiten:
Code: Alles auswählen
EnableExplicit
Define device.s = "Computer.Domain"
Debug StringField(device, 1, ".")
 
Das klappt. Prima. Ja, der String hat immer nur einen Punkt.
Neues Problem:
Das klappt unter Windows:
Code: Alles auswählen
RunProgram("curl\i386\curl.exe", "https://dweet.io/dweet/for/" + device.s + "?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
Unter macOS klappt das nur, wenn ich den Parameter für RunProgram nicht dynamisch erzeuge.
1. Beispiel (klappt nicht):
Code: Alles auswählen
RunProgram("curl", "https://dweet.io/dweet/for/" + device.s + "?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
2. Beispiel (klappt):
Code: Alles auswählen
RunProgram("curl", "https://dweet.io/dweet/for/MeinDevice?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
Eine Idee, warum das unter macOS nicht klappt?
Quote-Tags repariert, -- A. 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 22:59
				von Kiffi
				das hier funktioniert zumindest unter Linux:
Code: Alles auswählen
EnableExplicit
Define myUniqueName.s
Define *Buffer, Size
InitNetwork()
myUniqueName.s = "PeterLovesPureBasic"
ReceiveHTTPMemory("https://dweet.io/dweet/for/" + myUniqueName + "?Hello=PureBasic&Timestamp=" + Str(Date()))
*Buffer = ReceiveHTTPMemory("https://dweet.io/get/latest/dweet/for/" + myUniqueName)
If *Buffer
  Size = MemorySize(*Buffer)
  Debug "Content: " + PeekS(*Buffer, Size, #PB_UTF8 | #PB_ByteLength)
  FreeMemory(*Buffer)
Else
  Debug "Failed"
EndIf
Ansonsten mal schauen, was bei Dir in 'device.s' steht. Könnte sein, dass da ein Sonderzeichen drinsteht.
Grüße ... Peter
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 06.06.2017 22:59
				von Bisonte
				thinkitsimple hat geschrieben:Neues Problem:
Das klappt unter Windows:
Code: Alles auswählen
RunProgram("curl\i386\curl.exe", "https://dweet.io/dweet/for/" + device.s + "?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
Unter macOS klappt das nur, wenn ich den Parameter für RunProgram nicht dynamisch erzeuge.
1. Beispiel (klappt nicht):
Code: Alles auswählen
RunProgram("curl", "https://dweet.io/dweet/for/" + device.s + "?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
2. Beispiel (klappt):
Code: Alles auswählen
RunProgram("curl", "https://dweet.io/dweet/for/MeinDevice?hello=world", GetCurrentDirectory(), #PB_Program_Hide)
Eine Idee, warum das unter macOS nicht klappt?
 
Unter bestimmten Umständen (die mir nicht bekannt sind) ist das auch unter Windows so.
Ich habe mir daher angewöhnt : Erst die Strings für die Parameter zusammenbauen und dann RunProgram aufrufen. Das klappt dann
eigentlich immer.
 
			 
			
					
				Re: RTrim kürzt nicht
				Verfasst: 07.06.2017 14:25
				von thinkitsimple
				Kiffi hat geschrieben:
Ansonsten mal schauen, was bei Dir in 'device.s' steht. Könnte sein, dass da ein Sonderzeichen drinsteht.
Grüße ... Peter
Danke. Das war es. Im Computernamen gab es einen Bindestrich, das mochte macOS offensichtlich nicht.
Das Ganze sieht jetzt so aus:
Code: Alles auswählen
; sends some device informations to dweet.io
; read last message from your device on https://dweet.io/get/latest/for/your_device_name
; read all messages from your device on https://dweet.io/get/dweets/for/your_device_name
device.s = StringField(ComputerName(), 1, ".") ; remove everything after computername eg .domain
device.s = RemoveString(device.s, "-")         ; remove hyphen (-)
device.s = UCase(device.s) ; convert device.s to uppercase
cURLParam.s = "https://dweet.io/dweet/for/" + device.s + "?hello=world"
Debug(device.s)
Debug(cURLParam.s)
CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    RunProgram("curl\i386\curl.exe", cURLParam.s, GetCurrentDirectory(), #PB_Program_Hide)
  CompilerCase #PB_OS_MacOS
    RunProgram("curl", cURLParam.s, GetCurrentDirectory(), #PB_Program_Hide)
CompilerEndSelect