Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] String samenvoegen *

Pagina: 1
Acties:
  • 1.307 views sinds 30-01-2008
  • Reageer

  • Wilde
  • Registratie: December 2000
  • Niet online
Ik ben in zelfstudie met c# bezig, en ben dit weekend een eerste applicatie aan het bouwen (je moet ergens beginnen).. Ik heb de volgende regel

code:
1
 addLogEntry("Gebruiker "+dedi_IO.getInstance.getUserListString(dr_srv_cnt)+" was NOT FOUND !!");


De methode getUserListString geeft een string terug.

Nou doe ik waarschijnlijk wat fout bij het samenvoegen van de string "Gebruiker ", het resultaat van de methode getuserliststring en de string " was NOT found!" want die laatste komt er niet achter te staan..

Het resultaat wat dus in mij log komt is: "Gebruiker XXXXXX". en meer niet.

Moet ik op een andere manier de string samenvoegen ? Ik zal wel iets over het hoofd zien maar ik weet niet wat, en hierop googlen is eindeloos zoeken geworden :(

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?

SEA >> PRG

Verder heb ik je topictitel even aangepast conform onze Programming Beleid Quickstart ;)

Is je log beperkt op een bepaalde max. string lengte? En als getUserListString een enkele string terug geeft, vind je getUserListString dan ook geen verwarrende naam? Lijkt me eerder een array of list terug te geven ;)

Verder: kijk ook eens naar Debuggen: Hoe doe ik dat? en de term die je zoekt is concatenation. Maar ik zou inderdaad voor Serpie's oplossing (hieronder) gaan :Y)

[ Voor 95% gewijzigd door RobIII op 22-07-2007 13:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
Probeer het anders met String.Format:

Zoiets:
code:
1
String.Format("Gebruiker {0} was NOT FOUND !!", dedi_IO.getInstance.getUserListString(dr_srv_cnt));

  • FTL
  • Registratie: Maart 2000
  • Laatst online: 16:38

FTL

Nope, je kan rustig met een plusje strings samenvoegen.
Een alternatief zou kunnen zijn (maar geen oplossing voor je probleem ben ik bang)

C#:
1
addLogEntry(String.Format("Gebruiker {0} was NOT FOUND !!", dedi_IO.getInstance.getUserListString(dr_srv_cnt)));


(edit: great minds think alike :))

[ Voor 6% gewijzigd door FTL op 22-07-2007 13:06 ]


  • Wilde
  • Registratie: December 2000
  • Niet online
Bedankt voor het meedenken zover ;)

Ik heb het met de string.format geprobeerd, maar er gebeurd precies hetzelfde. De uiteindelijke string is dus nogsteeds "Gebruiker XXX" en het was not found wordt er niet achter gezet..

de methode addlogentry doet niets meer dan een regel toevoegen aan een listbox, en daar is ruimte zat. Als ik er een constante string neerzet gaat het prima, het is het samenvoegen wat niet lukt :X

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat is de exacte inhoud van de geretourneerde string? Geen nul-bytes erin ofzo?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Splits je regel anders op in 2 stukken:
code:
1
2
string username = dedi_IO.getInstance.getUserListString(dr_srv_cnt);
addLogEntry("Gebruiker "+ username +" was NOT FOUND !!");


Zet vervolgens een breakpoint op de tweede regel (klik in de linker kantlijn voor die regel, er komt dan een rood balletje voor te staan). Als je nu het programma start in debug mode (F5), dan zal het programma onderbroken worden wanneer de computer op het punt staat de betreffende regel uit te voeren.

Als het goed is krijg je dan onderin beeld de debug variabelen te zien, waaronder de inhoud van de variabele 'username'. Misschien zie je daar iets raars in?

Ik kan me voorstellen dat het laatste karakter van de username een null byte is (niet het teken '0', maar de waarde 0), en dat je daarom niet de rest van je tekst te zien krijgt.

  • Wilde
  • Registratie: December 2000
  • Niet online
Ben in het debuggen gedoken en vind met name de run-to-cursor samen met de variable watch bijzonder makkelijk.. Stond inderdaad een /0 achter de string. Die string heb ik met een Sendmessage API call gekregen..

code:
1
2
3
4
5
  {
       string tempname = new string(' ', 50);
       int res = Win32.SendMessage(GTR2Handles.getInstance.getGTR2SessionHandle(), Win32.WM_GETTEXT, 50, tempname);
       if (res != 0) return (tempname.Substring(0, res)); else return ("Error !");
      }


Ik heb het opgelost door in de return een Substring(0,res) mee te geven aangezien Trim() of Trim('\0') niet werkte. Het werkt nu goed !

Topic mag van mij dicht, bedankt !!

Specs: 9800X3D, RTX 5090, 64GB, VR: Pimax Crystal-Light


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wilde schreef op zondag 22 juli 2007 @ 19:24:
Topic mag van mij dicht, bedankt !!
Een slotje is niet nodig op een topic als je je oplossing hebt. Zie daarvoor ook onze faq betreffende topiceinde. Dit topic illustreert wel mooi hoe belangrijk het is om alle relevante informatie op te nemen in je Topicstart. In dit geval was het feit dat je de string uit een API call had gekregen geen overbodige informatie geweest als je in een managed omgeving als .Net werkt ;)

[ Voor 29% gewijzigd door RobIII op 22-07-2007 21:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1