Knast Skrevet 15. juli 2009 Del Skrevet 15. juli 2009 Jeg har en richtextbox med innhold som ser slik ut: asdasdasdasd asdasdasd asdasdasd asdas awdaw asd awdawd asda wadwd asd aweda asdsadasdasdasd aasda Linjene har et tilfeldig antall blanke foran seg og noen har blanke inni seg. Jeg ønsker å fjerne alle blanke i starten av en linje.. Noen løsningsforslag? Lenke til kommentar
GeirGrusom Skrevet 15. juli 2009 Del Skrevet 15. juli 2009 public string TrimString(string[] input) { StringBuilder ret = new StringBuilder(); foreach(var line in input) ret.Append(line.Trim() + Environment.NewLine); return ret; } public void Trim(RichTextBox input) { input.Text = Trim(input.Lines); } Lenke til kommentar
Knast Skrevet 15. juli 2009 Forfatter Del Skrevet 15. juli 2009 (endret) System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = @"CMD.exe"; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.WorkingDirectory = "c:\\"; p.Start(); p.StandardInput.WriteLine("@echo off"); p.StandardInput.WriteLine("dir"); p.StandardInput.WriteLine("exit"); string result = p.StandardOutput.ReadToEnd(); De aktuelle "writelinene" skal ikke brukes, men bare tester med dem.. Når jeg gjør det på denne måten får jeg alt for mye output: Microsoft Windows XP [Versjon 5.1.2600] © Copyright 1985-2001 Microsoft Corporation c:\>@echo off dir Volumet i stasjon C er uten navn. Volumserienummeret er 1234-1234 Innhold i c:\ 01.07.2009 10:45 1ÿ024 .123 23.01.2009 12:18 <DIR> 123 29.10.2008 17:29 0 AUTOEXEC.BAT 24.06.2009 17:08 <DIR> c8c005fb3d94de8b25 29.10.2008 17:29 0 CONFIG.SYS 29.10.2008 17:36 <DIR> Documents and Settings 15.07.2009 13:37 <DIR> Download 01.07.2009 11:53 <DIR> 123 29.10.2008 17:40 <DIR> Intel 04.03.2009 11:29 <DIR> Ny mappe 14.11.2008 12:13 <DIR> 123 14.07.2009 14:53 <DIR> Programfiler 29.10.2008 17:43 <DIR> SWSETUP 05.02.2009 10:17 <DIR> 123 15.07.2009 03:01 <DIR> WINDOWS 3 fil(er) 1ÿ024 byte 12 mappe® 31ÿ509ÿ807ÿ104 byte ledig exit Hvordan skreller jeg bort alt annet enn dir-listen? Endret 15. juli 2009 av Knast Lenke til kommentar
GeirGrusom Skrevet 15. juli 2009 Del Skrevet 15. juli 2009 for å sammenligne de tre første tegnene bruker du .SubString funksjonenn i String klassne. For eksempel "abc123".SubString(0, 3) == "ABC123".SubString(0, 3) For å skrelle bort ville jeg kanskje brukt regex linje for linje. Lenke til kommentar
Degeim Skrevet 15. juli 2009 Del Skrevet 15. juli 2009 Hvorfor bruker du CMD? System.IO.Directory.GetFiles() og eventuelt System.IO.FileInfo() skaffer deg en slik liste på en mye enklere måte. Lenke til kommentar
Knast Skrevet 16. juli 2009 Forfatter Del Skrevet 16. juli 2009 Hvorfor bruker du CMD? System.IO.Directory.GetFiles() og eventuelt System.IO.FileInfo() skaffer deg en slik liste på en mye enklere måte. Jeg sa at det var for eksempelets skyld.. Jeg skal bruke cmd til å sende filer til en MVS-server. Til det bruker jeg et program "send" som ligger i system32-mappa og er tilrettelagt for cmd, men det er godt mulig at man kan sende det på andre måter.. Isåfall tar jeg gjerne imot forslag Lenke til kommentar
Knast Skrevet 17. juli 2009 Forfatter Del Skrevet 17. juli 2009 Er det noen enkle måter å fjerne tomme linjer på da? Lenke til kommentar
GeirGrusom Skrevet 17. juli 2009 Del Skrevet 17. juli 2009 Du kan sende filer over HTTP og FTP med System.Net.WebClient, over lokalnettet kan du bruke System.IO.File.Copy. Lenke til kommentar
Knast Skrevet 17. juli 2009 Forfatter Del Skrevet 17. juli 2009 replace \n\n med \n? Det gav ikke noe utslag.. Tenkte på det samme. Du kan sende filer over HTTP og FTP med System.Net.WebClient, over lokalnettet kan du bruke System.IO.File.Copy. Skal se om det kan brukes i dette tilfellet.. Takk for tipset! Lenke til kommentar
hockey500 Skrevet 17. juli 2009 Del Skrevet 17. juli 2009 (endret) Vel, det skal fungere. Sikker på at den linjen er helt tom? Er det et mellomrom på den vil det ikke funke. Endret 17. juli 2009 av hockey500 Lenke til kommentar
Knast Skrevet 17. juli 2009 Forfatter Del Skrevet 17. juli 2009 (endret) Vel, det skal fungere. Sikker på at den linjen er helt tom? Er det et mellomrom på den vil det ikke funke. richTextBox1.Text.Replace("\n\n", "\n"); og jeg har fortsatt linjer som ser slik ut: blablabla blablabla.. gjør jeg noe feil? hva gjør \r? Endret 17. juli 2009 av Knast Lenke til kommentar
hockey500 Skrevet 17. juli 2009 Del Skrevet 17. juli 2009 ikke rart du ikke ser resultater når du forkaster returverdien fra Replace. richTextBox1.Text = richTextBox1.Text.Replace("\n\n", "\n"); Lenke til kommentar
Knast Skrevet 17. juli 2009 Forfatter Del Skrevet 17. juli 2009 ikke rart du ikke ser resultater når du forkaster returverdien fra Replace. richTextBox1.Text = richTextBox1.Text.Replace("\n\n", "\n"); takk Lenke til kommentar
Knast Skrevet 21. juli 2009 Forfatter Del Skrevet 21. juli 2009 (endret) Du kan sende filer over HTTP og FTP med System.Net.WebClient, over lokalnettet kan du bruke System.IO.File.Copy. Har kommet til dette punktet nå. Jeg skal sende en fil med ftp til et dataset på en unix-server. FTP-syntaksene har jeg klart å google meg til, men jeg skjønner ikke hvordan jeg skal klare å bruke create på noe som ikke ligger i en vanlig mappe men i FTP-rot/KATALOGER.SPESIFIKTDATASETNAVN. Datasettet har ingen filtype - målet er å kopiere ascii-innholdet på kildefilen inn til et katalogisert dataset. Jeg får dette til manuelt ved å gå inn i cmd. skrive: "ftp serveradresse" <innloggingsinformasjon> "cd .." "put lokaldisk:/kildefil.txt målkatalog.målsett". Hvordan kan jeg løse dette med FTP? Prøvde som en vanlig FTP-overføring med linjene beskrevet her, uten hell (fikk error 501). edit: Jeg tror kanskje problemet ligger i å kommunisere med en unix-basert stormaskin.. Om C# kunne emulere linjene jeg beskrev over steg for steg hadde dette kunne løst problemet. og: FTP (av MS) Endret 21. juli 2009 av Knast Lenke til kommentar
GeirGrusom Skrevet 21. juli 2009 Del Skrevet 21. juli 2009 Sånn sirkus rett fra minnet mitt: var client = new WebClient("ftp://ftp.etsted.com", brukernavn, passord); client.DownloadFile("minfil.ikke.noe.extension", "C:\Heipådu.txt"); Merk dog at for hver Dowanload/Upload instruksjon du gir til WebClient, vil den starte en ny ftp session, laste ned/opp og lukkes. Derfor er det blitt skrevet andre FTP klasser for .NET som forholder seg åpne. Dette på grunn av at FTP er en high latency protokoll som jeg ikke fatter hvorfor fortsatt er i såpass utbredt bruk. Lenke til kommentar
Knast Skrevet 21. juli 2009 Forfatter Del Skrevet 21. juli 2009 Sånn sirkus rett fra minnet mitt: var client = new WebClient("ftp://ftp.etsted.com", brukernavn, passord); client.DownloadFile("minfil.ikke.noe.extension", "C:\Heipådu.txt"); Merk dog at for hver Dowanload/Upload instruksjon du gir til WebClient, vil den starte en ny ftp session, laste ned/opp og lukkes. Derfor er det blitt skrevet andre FTP klasser for .NET som forholder seg åpne. Dette på grunn av at FTP er en high latency protokoll som jeg ikke fatter hvorfor fortsatt er i såpass utbredt bruk. Okay, jeg skal prøve det! Ellers så har jeg tenkt ut en provisorisk løsning med å bruke process ftp.exe med argumentet "-s:scriptfil.txt" som jeg setter opp tidligere i programmet. Veldig lite elegant - løsingen min, men bør virke.. Lenke til kommentar
GeirGrusom Skrevet 22. juli 2009 Del Skrevet 22. juli 2009 Du kan også sende script til ftp.exe med GetInputStream på Process klassen som gjør at du slipper å lage midlertidige filer (som jeg synes er en veldig grisete fremgangsmåte) Lenke til kommentar
Knast Skrevet 28. juli 2009 Forfatter Del Skrevet 28. juli 2009 Du kan også sende script til ftp.exe med GetInputStream på Process klassen som gjør at du slipper å lage midlertidige filer (som jeg synes er en veldig grisete fremgangsmåte)Se der ja! Flotte greier, da lærte jeg enda noe nytt! Enda et spørsmål: programmet mitt må søke gjennom hele ascii-filer på jakt etter en frase på 3 tegn som befinner seg i starten av linja. Jeg benytter meg av streamreader og en while-løkke som sjekker hver enkelt linje for substring(0,3) == minStreng. Med en tekstfil på noen tusen linjer er dette noe treigt. Finnes det en raskere måte å gjøre sånt på? Lenke til kommentar
hockey500 Skrevet 28. juli 2009 Del Skrevet 28. juli 2009 har du prøvd å bruke ReadBlock() eller ReadToEnd()? bare for å ha noe å sammenlikne med ytelsesmessig, så søkte jeg nettopp gjennom bibelen (30 383 linjer) etter en frase, og det tok 5ms. Så noen tusen linjer burde gå rimelig fort å søke gjennom hvis det er gjort riktig. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå