Avatar billede thomaslp Nybegynder
04. oktober 2003 - 23:09 Der er 18 kommentarer og
1 løsning

multiline textbox og streamwriter/reader

Når jeg skriver data fra fx. 3 TextBox'es får jeg et problem. Hvis der i den enkelte TextBox er trykket return for at lave nyt linieskift, så skrives min streng på flere linier i min txt fil. Det giver mig et problem når jeg skal genindlæse filen. Kan jeg på en eller anden måde slå dette fra, eller skal jeg gemme strengens længde måske?
Avatar billede odegaard Nybegynder
04. oktober 2003 - 23:12 #1
Den du ikke bare fjerne alle linjeskift?
mystring.Replace("\n","");
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:15 #2
En nem workaround var at erstatte alle linie skift med mellemrum:

string s = "1\n2\n3";
string s1 = s.Replace('\n',' ');
Avatar billede thomaslp Nybegynder
04. oktober 2003 - 23:25 #3
Har lige prøvet følgende kodeudsnit. Det virker ikke.

StreamWriter writer = new StreamWriter(outStream);
for(int i = 0; i < messages.Count; i++)
{
    Message m = (Message) messages[i];
    string s = m.Content;
    s.Replace("\n","");
    if(m.Content.Length>0)
            writer.WriteLine(s);
}
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:28 #4
Hvilken fejl får du ?

Jeg mener iøvrigt stadigvæk at linie-skift skal erstates af et mellemrum
ikke med ingenting.
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:29 #5
Hov glem det spørgsmål om fejl.

Replace ændrer ikke på den eksisterende streng men returnerer en ny
ændret streng - se mit kode fragment.
Avatar billede thomaslp Nybegynder
04. oktober 2003 - 23:31 #6
Det opdagede jeg lige. Men stadig ingen resultat.
Den fejl jeg får er at strengen udskrives til flere linier i min txt fil.
Da jeg skriver indholdet af fx. 10 Message objekter, ved jeg dermed ikke umiddelbart hvor mange linier der tilhører den enkelte Message, når jeg igen skal indlæse mine messages.
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:41 #7
Og koden ser ud som:

StreamWriter writer = new StreamWriter(outStream);
for(int i = 0; i < messages.Count; i++)
{
    Message m = (Message) messages[i];
    string s = m.Content;
    if(m.Content.Length>0)
            writer.WriteLine(s.Replace('\n',' '));
}

?
Avatar billede odegaard Nybegynder
04. oktober 2003 - 23:41 #8
hvad med at lave en slags kode, der angiver linieskift? Fx. <br> som i html
s.Replace("\n","<br>");

Når du indlæser den igen, laver du så blot den modsatte replace
Avatar billede thomaslp Nybegynder
04. oktober 2003 - 23:49 #9
arne_v > Når jeg anvender din løsning bliver der istedet for linieskiftet skrevet en lille firkant. Teksten står ganske vist på 1 linie, men firkanten må betyde linieskift. Så når jeg igen indlæser fra filen er problemet det samme.
Avatar billede thomaslp Nybegynder
04. oktober 2003 - 23:51 #10
sker også ved odegaars forslag. den lille fikant efterfulgt af <BR>.
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:54 #11
Måske er der også return.

Prøv med:

string s1 = s.Replace("\n"," ");
string s2 = s1.Replace("\r","");

Altså erstat <LF> med mellemrum og <CR> med ingenting.
Avatar billede arne_v Ekspert
04. oktober 2003 - 23:54 #12
Og brug <BR> som foreslået af odegaard hvis du gerne vil kunne genskabe linie-skiftene.
Avatar billede thomaslp Nybegynder
05. oktober 2003 - 00:10 #13
okay....det var et return der drillede. nu virker det med at skrive
jeg anvender <BR> til at indikere linieskift. Nu kommer det sjove bare.
Når jeg nu indlæser fra filen igen får jeg de 2 firkanter i min TextBox, efter at have gjort følgende:

string input = null;
while((input = reader.ReadLine()) != null)
{
    Message m = new Message(getNewNumber());
    string inp = input.Replace("<BR>", "\n");
    m.Content = inp;
    messages.Add(m);
}

Altså godtnok linieskift, men det er TextBox'en bare ikke med på at det er :)
Any ideas
Avatar billede arne_v Ekspert
05. oktober 2003 - 00:19 #14
GUI er absolut ikke min stærke side.

Er MultiLine sat til true ?
Avatar billede arne_v Ekspert
05. oktober 2003 - 00:19 #15
Multiline
Avatar billede arne_v Ekspert
05. oktober 2003 - 00:21 #16
Hm.

Dumt spørgsmål.

Titlen antyder ret kraftigt at det er den.
Avatar billede thomaslp Nybegynder
05. oktober 2003 - 00:22 #17
Multiline er true. Umiddelbart virker det som om at min TextBox ikke "forstår" at vise \n eller \r korrekt
Avatar billede arne_v Ekspert
05. oktober 2003 - 00:28 #18
Har du prøvet med:

string inp = input.Replace("<BR>", "\r\n");

?
Avatar billede thomaslp Nybegynder
05. oktober 2003 - 00:32 #19
Jamen det var jo lige det der skulle til. Men ret ulogisk hvis du spørger mig.
Nå men det virker jo. Jeg takker for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester