RTrim kürzt nicht

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
thinkitsimple
Beiträge: 16
Registriert: 25.05.2012 15:14
Wohnort: Berlin, Germany
Kontaktdaten:

RTrim kürzt nicht

Beitrag von thinkitsimple »

Ich möchte alle Zeichen eines Strings löschen, die ab einem bestimmten Zeichen vorhanden sind.

Code: Alles auswählen

device.s = "Computer.Domain"
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?
Michael

PureBasic 5.60, Windows und macOS
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: RTrim kürzt nicht

Beitrag von man-in-black »

Hi,

guck dir mal stringfield an.

MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
thinkitsimple
Beiträge: 16
Registriert: 25.05.2012 15:14
Wohnort: Berlin, Germany
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag 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:

Code: Alles auswählen

RTrim(Computername(), ".")
Damit wird aber nur der Punkt entfernt. Ich möchte aber alles ab dem Punkt nach rechts entfernen.
Michael

PureBasic 5.60, Windows und macOS
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag 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), "."))
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag von GPI »

thinkitsimple hat geschrieben:Ich möchte .Domain entfernen.
Ich habe folgendes probiert:

Code: Alles auswählen

RTrim(Computername(), ".")
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().
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
thinkitsimple
Beiträge: 16
Registriert: 25.05.2012 15:14
Wohnort: Berlin, Germany
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag 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.
Michael

PureBasic 5.60, Windows und macOS
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: RTrim kürzt nicht

Beitrag 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
Zuletzt geändert von Kiffi am 06.06.2017 23:00, insgesamt 1-mal geändert.
Hygge
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: RTrim kürzt nicht

Beitrag 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.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
thinkitsimple
Beiträge: 16
Registriert: 25.05.2012 15:14
Wohnort: Berlin, Germany
Kontaktdaten:

Re: RTrim kürzt nicht

Beitrag 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
Michael

PureBasic 5.60, Windows und macOS
Antworten